This week my guest is Elementās Kat who conducted various Community Testing Sessions. If you want to learn more about it, why Kat is conducting them, and how you can help, have a look at it!
TL;DR: Europe is close to officially regulating big corporations and forcing them to open their silos via the Digital Markets Act. Element joined forces with other companies to make sure that the members of the European Commission about to vote on the regulation knew how important it is.
Matrix was created to break the silos, as an interoperable layer for all communications. We wanted to ensure people had the ability to choose where their data is stored, and had the choice of interface to access them. This was also a good way to enable better competition and innovation in the communication space, forcing the players to compete on value add. But whilst Matrix is already a 39M users open network in itself, it could be even better if the bigger silos decided to open up and participate into it.
In December last year, as part of the Digital Markets Act (DMA), the European Commission proposed to update the competition law for digital markets with rules mandating āgatekeepingā platforms to open up, in order to enable innovation and data sovereignty.
This move is so aligned with Matrix and Elementās mission, that Element joined over twenty other organisations to launch the Coalition for Competitive Digital Markets on Tuesday the 26th. The coalition supports stronger rules for large online platforms in the DMA, calling for amendments to it to make sure that major services offer a public API to interact with their core services and to ban the pre-installation and default setting of core platform apps.
Matrix is a perfect example of how technology can thrive through openness and collaboration. We will bring our experiences of using federated and decentralised technologies to MEPs and Council members, in the hope for a regulatory framework which supports European innovation, competition and interoperability.
Hereās your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://spec.matrix.org/unstable/proposals.
Matrix 1.1 is just around the corner! The team continues to work hard on getting the infrastructure surrounding the new release process set up, as well as reviewing MSCs, including the ones you can see above!
The current speculative release date is in about a week or two. Keep your eyes peeled!
This is one of those MSCs that will likely be sorely needed at some point in time, but currently hasnāt gotten a lot of attention. I can think of all sorts of usecases for this (on top of the many that the MSC puts forwards). Go ahead and give it a read!
Over the weekend, one of the servers backing matrix.org suffered a hardware failure, leading to around half an hour of downtime as we failed over to another system. Remediating and monitoring that has been the focus of much of the Synapse team over the past week.
We also shipped a release candidate for Synapse 1.46, due for formal release next week. Notably, we believe this solves a performance regression which was introduced in Synapse 1.44. If youāve been experiencing long hangs or other periods of unresponsiveness, please try upgrading to 1.46.0rc1 and let us know if it resolves your issues.
The Synapse team has also decided to aim for building a rough prototype of MSC2775: Lazy loading over federation by the end of the year, in hopes that this will pave the way to extremely fast joins of large rooms.
Weāre also continuing to work on static type checking in our projects: As of today, Sydent passes mypy --strict! We hope to write about what weāve learned in the near future.
Hereās an addendum about Sydent. We can see the results of our efforts visually, thanks to mypyās reporting options. Two different metrics show increasing coverage since our typing efforts began in the summer. The grey strip shows the last fortnightās sprint in particular.
One of the shortfalls facing XMPP users of the Bifrƶst Matrix bridge is the lack of support for Message Archive Management (MAM), which allows XMPP users to retrieve messages sent when they are offline, when they come online next time. Sunday Nkwuda and Olatunji Ajayi, with help from Pirate Praveen, are planning on writing support for MAM in XMPP.js (the XMPP library that Bifrost uses), and then adding MAM support to Bifrƶst. Since this requires some dedicated full-time effort, they are fundraising to support this project at https://opencollective.com/mam-plugin-for-xmppjs. Many thanks to the XMPP Standards Foundation for serving as fiscal host for the fundraising.
Free form AUTOCMD after joining a channel, per channel
Automatic rejoin on invite or kick (invite enabled by default)
AVATAR network room command to set avatars for IRC users (admin only)
WHOIS room command for PMs, PART for channels
Add ROOM command in network room to run channel room commands safely
Move PLUMBCFG stuff under ROOM command
A smaller release this time around which consists mostly of QoL stuff to make things a little easier. IdleRPG users can now rejoice and login to your character automatically with channel AUTOCMD when joining on reconnect as whatās more important: running a bridge to engage in deep conversations or sit in a channel doing nothing?
Plumb users need to use the new generic ROOM command in network rooms to configure plumbs now that PLUMBCFG has been removed.
Several bug fix releases this week, and hope to get out another release tonight with support for dehydrated devices, which should prevent you from missing any messages while you are logged out of all your devices.
Our next community testing session on Web will be at 16:30 - 18:00 BST on Wednesday, 3rd November. We will be focusing on voice messages and calls. Join us in #element-community-testing:matrix.org to find out more and help out.
Added sourcemap support to the sentry telemetry sent with rageshakes, and added support for opt-in automatic sentry reporting when errors occur as a labs flag
Weāve been working on making notifications and matrix.to work correctly with threads in Element Web. Our MSC continues to progress, receiving feedback from the Spec Core Team this week, and weāve started to plan how to test the feature.
Weāre also exploring more intuitive ways to lay out and customise Spaces on the web.
Element Android 1.3.6 is on its way to the PlayStore but Google is taking looooong time to review. Release candidate 1.3.7 is scheduled to next Wednesday
Replacing Rx by coroutines Flow is nearly there, and will be merged on develop after the release 1.3.7.
Besides that we have started to work on Threads and on Polls.
Some changes have been made on the SDK API to suit SDK users regarding the AuthenticationService. They will be available in SDK 1.3.7 (next Wednesday).
And as always, we work to improve the performance of the application and of the SDK, as well as fixing bugs here and there.
We added two (opt-in) lab options:
Automatic bug report
Structured login / open telemetry (offline)
On the crypto side, weāre making progress on Android Rust SDK, room shields and key backups
Last week we had a successful and productive community testing session on Android where we found many issues, including 21 defects, which are already being addressed by product, designers and developers.
Hello again! Halcyon is a Matrix bot library created with the intention of being easy to install and use.
This release brought some new non-breaking features:
Added markdown package as a dependency, used in formatted messages
Added support for the following message types: TEXT, EMOTE, NOTICE, IMAGE, FILE, AUDIO, VIDEO
Added support for downloading and uploading MXCs (matrix media)
Fixed a reported import issue when trying to use the CLI (Thanks @Josh)
Added more documentation and a new example in usage.md
Tobias Fella and I are going to give an introductory-level talk at Qt World Summit ā21 next Wednesday (3-Nov) about data encryption in Qt applications, with me giving my usual general bla-bla high-level overview and then Tobias talking about really specific stuff like Base64 using std::variant and a bunch of Qt classes to make your encryption-using code less of spaghetti and more of good-looking modern C++. The talk will be at 15:30 CET/CDT (once for EMEA/APAC and once for Americas), Platform track. Advance registration is necessary. In fact, the talks are pre-recorded but both of us will be online during the session and shortly after so please come around to make sure The Qt Company gets the message and considers adding Quotient as another module to Qt (ok, thatās just a dream for now but who knowsā¦)
Heads up for those in Berlin. Youāre welcome to join us Tuesday, 2nd Nov at 7:00 PM chatting about Matrix development and hosting. Weāre going to meet in person at c-base. In compliance with the hackerspaceās house rules this is a strict 2G event.
If possible, join our #matrix-berlin:matrix.org room.
I work on Collabs, a library for making decentralized collaborative apps, and we have some demos that run on Matrix! E.g., in a widget-capable client like Element, send the message:
to add a collaborative text editor widget. (Fair warning: loading and saving is flaky, so donāt type anything you canāt afford to lose.)
All collaboration happens using messages sent to the Matrix room. So, youāre not dependent on any external service provider, and the document is end-to-end encrypted if your room is.
We have more demos here, with instructions on how to use them in a widget. You can follow those same instructions to run your own Collabs apps (Getting Started Guide), without needing to host any servers yourself!
If you want to learn more about Collabs and see an app running on Matrix, check out my Strange Loop talk: https://www.youtube.com/watch?v=Exr0iY_D-vw&t=3s. The library is in an alpha state and not yet ready for production use, but weāll be improving it steadily over the next year.
In FediJam feedback we were asked to explore federated gaming.
So, for my third FediJam I made a dead-simple prototype of a game using Matrix not for chat, but for multiplayer.
Behold, the Federated Triangle of Doom.
Game creates a chat. Any message with āboomā posted into there spawns the Red Triangle of malice.
Yes, literally just it.
Behind the scenes, it uses Godot Engine, with godot-python to make it python-capable.
To connect via Matrix, it leverages matrix-nio python module.
As a server, any Matrix server without captcha/email for registration will do!
For simple local tests, I included conduit with the Linux release.
Element is on the hunt for more VoIP and VR developers to help us build next-gen native Matrix video conferencing and VR/metaverse experiences on top of Matrix! If you believe the future of the metaverse should be free/libre, standards-based, open and equitable, come join the resistance! https://apply.workable.com/elementio/j/25BB112FBD/
Julian Sparber from the Fractal team was here with us this week, to tell us about the Fractal Next initiative: a rewrite of the app that leverages new technology. You can talk to the Fractal community by joining their room at #fractal:gnome.org.
Iāve been working on a brand new /sync mechanism, dubbed sync v3, for the past few months. This is a complete overhaul of how clients live-stream sync data from homeservers, and fixes numerous pain points with /sync including:
Syncs taking minutes to complete.
Syncs sending back vast quantities of data (e.g read receipts for every room youāre in).
Currently, this new API is designed around the idea of having dynamic sliding windows around a sorted room list for a userās account. The room list can be sorted in different ways and only rooms in the window are returned to the client. The room list can also be filtered down based on various criteria (e.g only rooms in these spaces, with events newer than this timestamp, etc) and a subset of current room state can be requested with each returned room.
All joined rooms on user's account
Q W E R T Y U I O P L K J H G F D S A Z X C V B N M
\ /
\ /
\ Subset of rooms matched by filters /
Q W E R T Y U I O P L K J H G F D S A Z X C V
|
A C D E F G H I J K L O P Q R S T U V W X Y Z Rooms sorted by_name (or by_recency, etc)
|_______|
|
A C D E F first 5 rooms requested
This list is kept sorted on the server and deltas are communicated to the client as a series of delta operations (e.g INSERT,DELETE,UPDATE). Multiple non-overlapping windows can be requested and the windows can also change their size dynamically.
This work is still currently in the pre-MSC stage as itās a huge undertaking, but an early, runnable, implementation lives at the sync-v3 repo. This works by setting up a proxy sync server which will make /sync requests to a target homeserver, and storing the data in a useful form for sync v3 queries. It then exposes the sync v3 API which can then actually show you real data from your account.
+---------+ +--------------+ +----------------+
| sync v3 | <-- sync v3 API --> | sync v3 | <--- normal /sync requests ---> | Any Homeserver |
| client | | proxy server | | Impl |
+---------+ +--------------+ +----------------+
The proxy server also hosts a barebones web client which talks sync v3 at http://localhost:8008/client/ - to get started just point the proxy server to any HS and then paste in your access token to the web client. The web client is just a test jig so only has a read-only view of your account and lacks any scrollback, only showing live data. IMPORTANT: generate a new access token before using this client. Do NOT use the token from an existing client (e.g Element web) or else you risk being unable to decrypt E2EE messages.
Intrepid people are encouraged to run a server and see how fast sync on their own account could possibly be in the future. Note that the first sync will be slow as it has to fetch all the userās data via v2 /sync.
I know itās going to be a while before this finally gets into our hands as users, but Iām looking forward to it!
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.
FCP is currently paused while everything that isnāt currently implemented in the wild is removed for a future MSC.
New MSCs:
There were no new MSCs this week.
Spec Updates
This week the Spec Core Team has been marching ahead with getting the matrix-doc repository ready to start building new spec releases. Big props to Rich, Travis, Alexandre and others for charging ahead with it!
Otherwise, the Spec Core Team has been busy reviewing MSCs as can be seen from the above list of MSCs that have entered FCP this week. Particularly exciting is to see MSC2674 (event relationships, aka the stuff that powers message edits and reactions) coming close to merging! Itās been a long time coming. Thanks to Bruno and everyone else whoās reviewed it so far.
MSC3214 looks like an MSC thatās been somewhat abandoned by everyone involved⦠But since there are already implementations out in the wild, it may be a simple one to get through!
This week we have spent some time optimising the Pinecone overlay routing protocol. We have added cryptographic signatures to the bootstrap and path setup process for stronger verification and have also reduced the amount of protocol maintenance traffic.
We are also finally starting to document how Pinecone works ā you can find these living documents on the Pinecone repository wiki and many new comments have been added throughout the source code too.
We have also released build 88 of the P2P demo today for iOS and Android. These demos are forks of the Element app with an embedded Dendrite homeserver and Pinecone-based federation. Users can communicate with each other locally on the same Wi-Fi network, direct between devices in close proximity using Bluetooth Low Energy and globally by using internet peers!
Dept of Servers š¢
Synapse
Synapse is a popular homeserver written in Python.
This is the first release to support oEmbed autodiscovery, leading to richer link previews for many sites. See the release announcement for an example.
We also believe that weāve finally fixed stuck messages! A race condition would occasionally prevent your sent events from syncing back down to all of your clients. This caused messages to look like they were stuck at the bottom of the room, waiting to finish sending, even though other users would receive and see them normally.
Please shout loudly in this GitHub issue if you see a stuck message on a server running 1.45 or later. š
Weāve merged a further 9 pull requests to Sydent, making even more modules pass mypy āstrict. Weāre not quite all the way there, but weāre close! Most of the āleafā modules are done, with the bulk of the remaining work to be done is on sydent.http. This is trickier because itās more exposed to the machinery of Twisted, but weāll get there.
Weāre already much more confident working in Sydent, and hope to apply these lessons to Synapse soon.
(Well, one lesson that wonāt apply is that type hints are especially valuable in codebases you donāt touch as often⦠but we have no intention of slowing down on Synapse any time soon!)
This week too sees some Helm Chart updates, taking matrix-synapse first to 1.45.0 and then to .1 - as well as improving support for using existing secrets in a new deploy.
Heisenbridge is a bouncer-style Matrix IRC bridge.
Release v1.3.0 š„³
SOCKS proxy support
CertFP authentication support
WHOIS command and reply formatting
Basic CTCP support (optional, default off)
Compatibility/workaround for Dendrite and Conduit registration configuration
README has been improved
Big ticket items this time around for privacy concerned users are connectivity improvements when using Tor/VPN with built-in SOCKS proxy support and CertFP authentication. Some WHOIS and CTCP has also been thrown in the mix for good measure!
Lately there has been quite a lot of people who are testing Dendrite or Conduit which has led to recurring support issues around some limitations they currently have with appservices. Heisenbridge now supports using and generating a ācompatibleā registration file (--generate-compat) for them that shouldnāt be needed in the long run. I hope to drop this feature as soon as possible! š»
While Heisenbridge somewhat intentionally has very little documentation due to not having a refined UX yet the README has been updated with some frequently asked questions about installing and configuring it to the point you can talk with the appservice bot. A self-contained docker-compose setup has also been added to the repository to help testing it without installing anything on your system.
Last Saturday we had an improvised NeoChat mini development sprint in a small hotel room in Berlin in the occasion of the 25th anniversary of KDE. In a good KDE tradition, Carl spent this time on improving NeoChat settings. He ported both the NeoChat general settings and the specific room settings to the new Kirigami.CategorizedSetting component. Tobias fixed a lot of papercuts and now the power level should be fetched correctly, we show the number of joined users instead of joined+invited users in the room information pane, the user search is now case insensitive. Nicolas focused on fixing our Android build by making the spellchecking feature compile on Android.
Aside from the mini-sprint, we also made a few more improvements during the week. Tobias fixed the flicking of the timeline on mobile and Carl made it possible for the user to resize the room information drawer.
Nheko
Nheko is a desktop client using Qt and C++17. It supports E2EE and intends to be full featured and nice to look at
Thulinma added device management to Nheko. You can now also view your devices, that donāt support encryption, delete devices, rename them and see their ip address. Additionally there were a few refactorings and code improvements. Most notably blurhashes should now decode twice as fast. Additionally there were a few small fixes to displaying hidden space rooms (we were checking the wrong power level, so in some cases fewer rooms got shown in a space, if they only had a parent set). Thatās all, was a busy week with lots of lasers!
Element
Updates from the teams:
Web
Finalised our team goals of reducing prioritised defects, shipping threads MVP, better release automation and getting posthog analytics live!
Working on clarifying the threads MSC in response to feedback
Working on user prompts for analytics
Fixed bugs in RTL text and code block rendering
Released Element Web 1.9.3RC
Spaces
On iOS, weāve been implementing support for creating Spaces, implementing the screens using SwiftUI.
Weāre also making good progress on iterating on the info architecture of the app, to make Spaces more intuitive. Expect more things soon!
iOS
Publish release 1.6.6 containing matrix.to display behavior improvements on timeline and other improvements made this week.
Improve matrix.to redirection in timeline, pushing views instead of replacing current ones
Improve settings UI
Allow images to be pasted from Safari rather than their URL
Implement message forwarding
Improve wellKnown parsing
Fix bugs and crashes
Android
Release candidate 1.3.4 has been prepared Wednesday and tested by the community during a testing session in the afternoon. It adds presence support for DM, and Android Auto support has been restored. You can find out more about the next testing session at #element-community-testing:matrix.org
We are preparing a version 1.3.5 which fixes small regressions and a bug in the Room settings.
Migration to Hilt (Dependency Injection library) is nearly there, PR is in review.
Notifications management has been rework, a bunch of issues has been fixed, this will be for release 1.3.6
We have started to work on Threads
Crypto Team:
UISI Hunting: Investigations and Auto UISIs reports lab option, UI improvement work started
Web: Device Trust view improvement
Next gen
Corroded-Android: Backup support
Messaging Layer Security
Fractal
Not only is Fractalās Julian featured in this weekās Matrix Live, he also has been very active in the month since our previous report. I wonāt list here the very long list of merged merge requests, but the most noteworthy changes he brought are:
Hey, TWIM. Did you ever face a situation where you need to run any command prefixed with time command-name and get a ping in matrix room when itās done? No? Well, doesnāt matter, now you can do that with one small command!
That thing called time-to-matrix (binary name: ttm) it works like time command-name and sends results to matrix room. Yes, pretty simple. Now you can use it š
Element One is here! Weāre giving TWIM a sneak preview of the new Matrix hosting service from Element in advance of the official launch next week. Element One* is a consumer-focused hosting option which gives you an individual Matrix account on our shiny new one.ems.host homeserver (with a matching Element Web at one.element.io). However, in addition to being a fast, snappy Matrix account, it also comes with unlimited personal bridging to Whatsapp, Signal and Telegram thanks to mautrix-whatsapp/signal/telegram!
Hopefully this is good news for those of you who have chats with friends and family on these other platforms, as you can now chat with them in one place from Element without having to mess around having to run your own bridge - and accounts cost just $5 per month.
Right now this is a (relatively) private / limited beta intended for the TWIM and EMS inner circle, and weāll be announcing more generally in the next few days / weeks. So, if you are interested, please check it out and sign up at https://ems.element.io/element-one :)
Good news - Miounne got new release with a lot of small neat changes (and even some features, yes-yes) and binary releases for major platforms and architectures
Good/bad news - e2e integration was removed, because I failed to implement to āwell, usableā state š
So, go check out releases, changelog and donāt forget to pull new docker images.
You asking whatās that about? Mother Miounne is ābackofficeā of etke.cc service.
Iām too sad to add good jokes and brief descriptions, so just join the #miounne:etke.cc room to find more
SeaGL (Seattle GNU/Linux Conference) will be held online November 5ā6, powered by Matrix. Join our freeāas in freedom and teaāgrassroots technical summit. No registration required! This yearās theme is āon cloud nineā, in recognition of our ninth year.
Keynote speakers are:
Marie Nordin
Christine and Morgan Lemmer-Webber
Elana Hashman
Cory Doctorow
We have over three dozen other great talks on free and open source software, hardware, and culture. Plus some fun social activities. Volunteers are still needed if you want to lend a wing!
Hi everyone! Did you ever feel lost in the Matrix world? The room directory is big, but itās still hard to find something you like. Or are you a room moderator, but there is not much activity in your room because it doesnāt have enough users?
This is why I want to share rooms (or spaces) I find interesting.
Synapse 1.45.1 is out now! Python 3.10 and PostgreSQL 14 are now tested and supported by Synapse. Support for Python 3.6 and PostgreSQL 9.6 will be removed by the end of the year.
Note: This release may require changes to how media storage providers access your homeserverās configuration. See the Upgrade Notes for more information.
Note: Synapse 1.45.0 was released yesterday and changed how Synapseās monthly active user limits were calculated. Todayās release of 1.45.1 reverts that change, but is otherwise identical to 1.45.0.
Support for oEmbed Autodiscovery
Synapse can now automatically discover rich metadata when generating previews of links to sites which support oEmbed.
Before:
After:
Note that URL previews are generated server-side, and thus generally disabled in encrypted rooms to avoid leaking information about message content to your homeserver. You may need to adjust the roomās settings to see the new oEmbed previews.
Fixing Stuck Messages
This release of Synapse fixes a race condition which would occasionally prevent your sent events from syncing back down to all of your clients. This caused messages to look like they were stuck at the bottom of the room, waiting to finish sending, even though other users would receive and see them normally.
Improved Privacy for Per-Room Nicknames
Matrix allows users to set their display names to be different things in different rooms. For example, you might use an alias in public rooms, but your real name in rooms shared with friends and family.
To make it easy to initiate conversations with people, each homeserver maintains a user directory with the Matrix ID, display name, and avatar of the users it sees. Previously, this directory would be updated with the most recent profile metadata that Synapse had seen for a user, even if it was only changed in a single room.
As of 1.45, Synapse only uses includes the default display name of local users in its user directory, ignoring room-specific nicknames or avatars. (#5677).
Internals
This release includes numerous fixes and improvements to Synapseās internals.
Weāve added countless static type annotations to Synapse (and related projects like Sydent), giving us greater confidence in its correctness and reducing maintenance costs. Several modules newly have all of their definitions typed, allowing us to require and enforce complete type coverage for all future edits therein.
This release includes meaningful fixes and improvements to our OpenTracing and logging machinery, helping us better catch and eliminate bugs in Synapse. This work ultimately reduced matrix.orgās Sentry event volume by an order of magnitude.
Magic accessor methods have been removed from Synapseās Config class. Previously, Synapse would interpret references like config.send_federation by attempting to guess a reasonable full path, like config.worker.send_federation. As of Synapse 1.45, the full path must be specified directly. This prevents errors where values could be drawn from unexpected or incorrect sections of the serverās configuration.
Everything Else
Weād like to extend a special thanks to Fizzadar from Beeper for improving Synapseās update_synapse_database script (#10954) to allow schema changes to occur while Synapse is running. This is a great step toward reducing the downtime associated with upgrades.
These are just the highlights; please see the Upgrade Notes and Release Notes for a complete list of changes in this release.
Synapse is a Free and Open Source Software project, and weād like to extend our thanks to everyone who contributed to this release, including AndrewFerr, dklimpel, Fizzadar, lukaslihotzki, and maxkratz.
Hereās your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://spec.matrix.org/unstable/proposals.
Additionally, take a look at the Client-Server API, where all current APIs have been bumped from /r0/... to /v3/.... See this bit of MSC2844 for the rationale behind this change.
The pieces are starting to fall into place for the upcoming Matrix 1.1 spec release!
This is a concept that was used in the Spaces MSCs to allow servers and clients to denote a room as a Space vs. a typical Matrix room (and set up their UI appropriately). Only the type for a Space has been specified so far, but there are many different applications room types could serve; for example profile rooms!
This MSC aims to create a general concept for a typed room, whereas future MSCs would identify those types and their meaning.
Happy Friday! The Synapse team has been sorting out what we hope to accomplish before the end of the year, and itās looking like our main focus will remain research and experimentation towards making large room joins go very fast. We donāt yet see an incremental path from where we are now to where we want to end up, so progress will likely come as a few discrete milestones, rather than a gradual acceleration over time.
Aside from room joins, we expect to spend a good bit of time time on bug fixes and preventative maintenance. For example, we hope to get Sydent passing mypy --strict by this time next week. Doing so would have prevented recent production issues, including one which caused phone number verification to silently fail.
Preparations for releasing 1.45.0 continue apace; Iām looking forward to telling you about it next week!
letās bridge everything! Have you ever wished you could make and receive phone calls with matrix?
The beginnings of a matrix <-> SIP bridge are done :) If you can imagine to live with bugs or even help with the development yourself, feel free to give it a try! :)
https://github.com/alangecker/matrix-appservice-pstn
This release fixes several bugs and makes E2EE enabled by default.
feat: Enable E2EE by default for new rooms
feat: Display all private rooms without encryption as red
feat: New design for bootstrap
feat: New design for emoji verification
feat: Display own MXID in the settings
feat: More finetuning for font sizes
chore: Updated translations (Thanks to all translators!)
fix: App crash on logout
fix: Temporary disable sign-up for matrix.org (Currently gives ā500: Internal Server Errorā while FluffyChat should send the same requests like Element)
fix: Implement Roboto font to fix font issues on Linux Desktop and mobile
fix: QR Code scanning
Nheko
Nheko is a desktop client using Qt and C++17. It supports E2EE and intends to be full featured and nice to look at
Making steps towards stable E2EE, we have now implemented bootstrapping cross-signing on a new account. This allowed me to finally enable cross-signing on my Nico (nheko.im) account (which I intended to only use with Nheko). Thulinma also added a way to refresh the current device list as well as highlighting your current device in the device list, which should make it easier to recover, if a misscommunitcation with the server lead to an outdated device list. Meanwhile LorenDB has been plugging away on converting more dialogs to Qml and we merged like 3 converted dialogs!
Element
Web
Released Element Web 1.9.2 featuring chat export, Spaces and E2EE improvements, updates to Electron 13.5.1
More progress on the client side of threads, published an MSC and started work on Synapse support
Fixed some bugs in registration, Windows icons, phone number confirmation
Delight team
On iOS, weāve been implementing support for pagination of the Space Summary API, to support larger spaces, as well as improving performance. Weāve also started implementing support for creating Spaces.
Weāre also exploring larger changes to make to the layouts of Element on all platforms to surface simpler and more intuitive navigation all round and tackle some of the feedback we couldnāt get to during the Spaces beta. Watch this space!
iOS
We failed to publish the app on the app store this week because of observed crashes. RC 1.6.5 is available on TestFlight. We should be able to release on the App Store on Monday
User auto completion has landed on develop
Message forward is in the horizon
Settings got lipstick by reviewing headers and footers
Hi folks! This week I took a bit of time out of my day to create a new widget for Matrix. We have the concept of āSpannersā at Matrix where one person wants to take control of a resource, and they will say āI am taking the spannerā. This prevents other people (verbally at least) from trying to use the resource at the same time.
For years we have been getting by with sending messages into Matrix, but no more! For now anyone can use the Spanner widget to set up a similar system in their room.
You can try this out now with /addwidget https://half-shot.uk/spanner?spannerName=YourSpannerName (although no promises about the uptime of half-shot.uk)
You will need to ensure that all users who plan to use it must be able to send state events of type uk.half-shot.spanner. Otherwise, it should be ready to go!
Dept of Ops š
Rager
I heard CLI tools are all the rage, so here is one!
Rager is a CLI tool for matrix client developers to easily view and parse rageshake logs. It handles syncing (with many parameters to sync only the logs you want), searching through downloaded logs, and paging through any log on your device (with peudo-syntax highlighting to make it easier to understand), right from the comfort of your terminal. It has been in development for a few months (being used/tested by devs at beeper.com) but I feel like itās now in a good enough state to release for everyone else to use. If itās something that may help you, try it out and let me know if it works for you!
We believe that having your own homeserver should be easy and require little technical knowledge. Thatās why we launched Hingst, a privacy focused Matrix hosting service which takes care of (almost) everything for you.
Our goal is that our users spend no time whatsoever on maintaining the actual server so they can focus on what matters - chatting with friends and colleagues.
All servers are located in Sweden and of course they run entirely on renewable energy!
Thatās all for now. Thanks for reading :)
If getting your own homeserver was hinging on the availability of such a service, you donāt have an excuse anymore!
Hi everyone! Did you ever feel lost in the Matrix world? The room directory is big, but itās still hard to find something you like. Or are you a room moderator, but there is not much activity in your room because it doesnāt have enough users?
This is why I want to share rooms (or spaces) I find interesting.
This week, I had the great pleasure of chatting with a lovely bunch from Element about Spaces. This feature just got out of beta and they tell us all about it.
Hello TWIM, itās me, not-anoa, again with your weekly spec update. I unfortunately didnāt get a chance to figure out how to run the tooling which generates fancy graphs, but it looks like youāll have a more qualified person next week š
This week we saw a couple new MSCs:
MSC3419 - Letting guests do more things (which is needed for things like full mesh conference calling)
MSC3429 - A room preview API. Turns out this is more or less a duplicate of another MSC, but has a different approach. Be sure to check both out š
Weāve also been making progress on trying to get the spec release out by formally specifying all the new global version numbering and new endpoint versioning (see this and this), and have been experimenting with how room versions are represented by the spec.
From page 6 of the open MSCs thereās MSC2723. The MSC is relatively small, but solves a fairly important problem with forwarded messages in Matrix: where were they forwarded from? From a glance, it has minor technical feedback and could do with an implementation (psst: client authors, this should be easy and fit well into a North American Long Weekend project š).
Thatās all I have for you today, but if Iāve missed something: sorry, and you should be in capable hands next week.
This week I have completely rewritten the Pinecone router with the aim of improving code quality and boosting performance. It now uses significantly less resources, making it much easier to simulate larger networks and using less battery power on mobile devices.
While there is still some work to be done to ensure the Pinecone network gracefully handles large-scale mobility events, protocol development is slowly progressing and we will soon be looking at how Matrix federation can be made more efficient by using routing intelligence from the overlay network.
If you have a passion for routing protocols and/or peer-to-peer systems, weāre looking to hire engineers to work in the P2P Matrix space ā get in touch by emailing your resume to us!
We also have our very own P2P Matrix room where you can follow along with the latest discussions and also occasionally pick up experimental iOS and Android builds of Element with an embedded P2P-enabled Dendrite homeserver.
We released Synapse 1.44 this week! The release was mainly focused on bug fixes and internal cleanups. In particular, weāve made significant strides toward enforcing static type annotations across several more Synapse modules, we continue to remove āmagicā code from our configuration handler, and weāve landed significant refactors to both the user directory and federated event authentication. These changes pay off significant technical debt, reduce Synapseās maintenance cost, and ease future bug fixes.
But thatās not all. This release also includes performance improvements around JSON serialization, new capabilities for extension modules, and better metrics around cache evictions. See the announcement for more details.
The first maintenance release of Quaternion 0.0.95 is here, plugging more HTML injections (quite limited this time), with tweaks in positioning of the timeline to really return to the message you last read before closing the room, colourful display names in the timeline and not just in the user list, and one particular crash fix for a case when you made a typo in your password but then did it right - only to see Quaternion falling down to pieces. The release notes, together with self-contained binaries, are in a usual place, the Flathub repo has a new Flatpak too - just go and update!
Cinny v1.3.2 got released this week. It fixes unwanted āPassword donāt matchā error on register page along with small improvements in Public room modal and message input (Thanks to Empty2k12). We also released v1.3.1 last week which fixed unnecessary CPU usages on idle and infinite spinner after login.
SchildiChat is a fork of Element that focuses on UI changes such as message bubbles and a unified chat list for both direct messages and groups, which is a more familiar approach to users of other popular instant messengers.
Both the Web/Desktop and the Android variant have received a couple of new features during the last weeks, so itās time again to share some of the highlights with you!
Web/Desktop
The Web/Desktop variant has received plenty of love for the last few weeks, so best to list some of the bigger changes:
Added a setting for the room list style: you can now choose between āroomyā with big avatars and two-line previews, āintermediateā for a smaller avatar and a single line preview, or ācompactā to get a tiny avatar and the room preview in the same line of the room name
Added a setting how to color usernames in the chat: either uniform, based on the MXID, or based on the userās power level (Android has this feature for some time already, too!)
Added a setting to not open automatically the most recent chat when switching spaces
Improved theme settings: you can now choose custom themes independently for both light and dark mode
Workaround for switching between light and dark mode together with the system on Linux
The following screenshot showcases the compact room list and user name color mode based on PL:
So take that, IRC style lovers! š
Android
We added support for MSC2654 for server-reported unread counts. This means that we can now display the number of unread messages even for muted chats, if your homeserver supports it (synapse does)!
Hello! Halcyon is a Matrix bot library created with the intention of being easy to install and use. My goal is to lower the barrier of entry currently required to write and maintain a bot. I do not intend you to need a database, or have to juggle encryption keys.
With the initial release of the library we currently have:
This week has seen two maintenance releases of libQuotient - just after 0.6.10 went out, fixing an issue with invites not showing up, another issue with URLs that have unescaped double-hashes (coincidentally, matrix.to URLs to some IRC channels are exactly those). Those URLs are not quite following the RFC but are accepted widely enough to warrant a fix, and a new release. Get 0.6.11 from here (or better, just checkout the respective Git tag).
A few weeks ago, I posted about the standupbot that I wrote to help assist with creating and sending standup posts to a room. Iām excited to announce today that you can choose to interact with the standupbot using threads! Instead of asking you about each part of the standup post individually, it creates threads for each of the parts that you can fill in. Your replies get added to the standup post like before, but itās a bit more interactive of a process. Hereās a picture of how it looks (ignore all the display bugs due to Element).
An (unofficial) Matrix server for the Newgrounds community.
Since I was pressed for time last week, I didnāt go much in depth on how this server works. Here is a brief overview of its components:
https://app.ngmvs.one: A self-hosted Element Web with some theming tweaks, and the easiest way to visit the server.
https://matrix.ngmvs.one: the homeserver itself (Synapse). It has open registration, but only for Newgrounds Supporters (ie. patrons) via SSO logins with Newgrounds accounts. But Newgrounds doesnāt have its own āLog in with Newgroundsā capability, so that leads me to the next component:
ng-saml-idp: middleware built on PySAML2 for using Newgrounds logins as a SAML2 Identity Provider. The code is tailored for my Synapse installation, but it can easily be tweaked to allow Newgrounds SSO logins to any SAML2-compatible service!
W-Bot: a Matrix appservice/bot built on mautrix-python that serves two purposes:
Creates Matrix rooms for Newgrounds movie/game submission pages (ie. maps #portal_view_<ID>:ngmvs.one to https://www.newgrounds.com/portal/view/<ID>), and adds a widget containing the submission itself to these rooms (but only if itās a movieāwidgets for games will only have a link)
Restricts membership of any room it moderates to logged-in Newgrounds Supporters. Users without a :ngmvs.one account can authenticate to the bot via the āloginā bot command, which lets them log into their Newgrounds account.
Point 2 also means that anyone on the Matrix network can make a room thatās restricted to Newgrounds Supporters. Just make sure the bot has a high enough power level to kick users!
Public (and federation-accessible) instance is at @w-bot:ngmvs.one.
(PS: The āWā stands for ādoubleāābecause of its job of ācopyingā rooms into Matrix.)
MVSX: a Firefox extension that, when visiting a Newgrounds movie/game submission page, puts a button in the URL bar that sends you to the Matrix room created for that submission by W-Bot.
This weekās updates:
W-Bot now has the inviteme command to invite the issuing user to the invite-only space room for logged-in Newgrounds Supporters. (Users should be invited there automatically, but this command is for people who leave / reject invites to that space & want to re-join it later.)
The MVSX extension has been updated to allow joining rooms with Matrix clients other than app.ngmvs.one. Right-clicking the URL bar icon now shows a drop-down list of alternative clients, and lets you set which one to use by default (on left-clicks of the icon).
Hi everyone! Did you ever feel lost in the Matrix world? The room directory is big, but itās still hard to find something you like. Or are you a room moderator, but there is not much activity in your room because it doesnāt have enough users?
This is why I want to share rooms (or spaces) I find interesting.
āIām in plenty of retro computing and gaming related Discords and got annoyed that there was no such thing on Matrix. So, I created a Matrix Space for all things retro computing and gaming, hoping there might be enough like-minded people on Matrix to build a community. There should hopefully be rooms for everything now, although a few are still missing room icons - that will come over the next days. Hereās to hoping that the retro computing community can also thrive outside of Discord š.ā
This release primarily includes fixes for over a dozen long-standing bugs. For example:
Messages containing null bytes are now properly indexed for search.
The Room Search Admin API now allows searching for rooms with non-ascii titles.
URL preview caches, which are meant to be ephemeral, are no longer mirrored from the local media store into other media providers.
Faster JSON Responses
We now stay within C code while generating large JSON objects for responses, which should be substantially faster than the previous technique, which fell back to Python for encoding.
New Extension Module APIs
Spam checker modules can now use a user_may_create_room_with_invites callback to inspect room creation events which include invitations to users via Matrix or other media (email, etc.).
Additionally, the ModuleApi can now inspect IP and User Agent data, as well as checking whether Rooms and MXIDs are local to the current homeserver.
Everything Else
Weāve also been busy refactoring. For example:
Prometheus stats now distinguish between cache evictions due to entries expiring, and cache evictions due to the cache being full.
The synapse.handlers, synapse.rest, and synapse.storage.databases.state modules are now fully type annotated and checked by mypy, among others.
The user directory search code was cleaned up in preparation for future fixes.
Another half dozen pull requests were merged with an aim toward clarifying federated event authentication code (and associated logging).
These are just the highlights; please see the Upgrade Notes and Release Notes for a complete list of changes in this release.
Synapse is a Free and Open Source Software project, and weād like to extend our thanks to everyone who contributed to this release, including aaronraimist, cvwright, govynnus, Kokokokoka, and tulir.
This week in Matrix, William tells us about the State Compressor he wrote during his internship to reduce the size of Synapseās database, and so much more. William being a former intern of the backend team, who else than his mentor Brendan could lead the interview?
Hello! It is not-anoa here with the spec update this week, which unfortunately means no pretty graph of MSCs (sorry). I do however have some curated updates to the spec for you:
Though WIP, both are exciting steps towards much larger goals - looking forward to see how they progress! We also saw FCP finish on MSC3231: Token authenticated registration, part of Callumās GSOC project this summer - congratulations! MSC2918: Refresh tokens also finished FCP this week, making it a good time for clients to consider that access tokens might expire or appear in a different format in upcoming versions of the spec. MSC2582: Remove mimetype from EncryptedFile object was also merged to the spec - thanks Sorunome for finding the duplicated field which was duplicated!
Behind the scenes, the Spec Core Team (SCT) has been thinking about how we can release the spec as weāve been talking about doing so for months. Weāre declaring a bit of a freeze on new things entering the spec for the time being, but that doesnāt stop MSCs from completing FCP or being opened - they just might miss the v1.1 cut (sorry). Most of the work needed to release is deployment stuff rather than Matrix stuff, so the hope is is we can get it all worked out soon.
I donāt have the random MSC script on hand, but I do have access to the MSC list and found WIP: MSC3030: Jump to date API endpoint. Itās listed as work in progress, but is one of the MSCs I personally look forward to being accepted in time!
Thatās all for spec this week. Iām not sure about next week, but you might be stuck with me again. Maybe I can find those fancy graph tools in timeā¦
Thanks a lot not-anoa, that was a great spec update!
Lots of work in preparation for Synapse 1.44 which is due out next week. Notably, weāve found a few small regressions in rc1, so expect another release candidate on Monday followed by a formal release on Tuesday or Wednesday.
I look forward to telling you all about that, and our plans for Q4, next week. š
Now thatās some teasing! I canāt wait for next week!
Hey folks, itās been a while since we released changes to the Slack bridge but here we are on our next RC. This one includes a few new things, most notably:
The bridge now automatically invites users to private rooms if there is a message and they are not joined. (#613)
Update bridge to matrix-appservice-bridge 3.1.0 (#614)
Also, a PSA: If you were struggling to bridge your rooms to matrix while using the matrix.org bridge, this should now be fixed. An update made to the Slack APIs silently broke the oauth flow, which has since been fixed. This was a misconfiguration-gone-unnoticed in our Slack app configuration, so self hosters donāt need to upgrade. The details are in https://github.com/matrix-org/matrix-appservice-slack/issues/617#issuecomment-932047990
Dept of Clients š±
Nheko
Nheko is a desktop client using Qt and C++17. It supports E2EE and intends to be full featured and nice to look at
While I am a bit busy at the moment, Nheko is getting a lot of valuable smaller contributions:
Updated the emoji pickers to Unicode 14, so that you can properly troll people.
Pasting images should now work properly again on Windows and macOS, including pasting SVGs!
The help and version command line parameters now work properly, even if an instance of Nheko is already running.
There has also been a lot of progress on the translations! We just cracked 50% translated, but since that includes a lot of languages with only a few percent, this is actually much more than it sounds! We actually have 8 languages with over 90% translations now. If you speak one of the languages at 70% or so, any help translating the remaining bits is very much appreciated. You can easily translate without an account here: https://weblate.nheko.im/projects/nheko/nheko-master/#translations If you want to translate without having to rely on the upvote mechanism, feel free to ask for translation permissions directly in #nheko:nheko.im. That is also the right room to ask questions about the translation process or translations themselves.
Nheko is also participating at Hacktoberfest this year. Translations done using the webinterface wonāt get counted for that though, you would need to submit a pull request manually for that. If you always felt like contributing to Nheko would be fun, but you had no reason to, now you can do it to let someone plant a tree for you (or get a T-shirt)!
Hydrogen saw a few bug fixes (0.2.14, 0.2.15 and 0.2.16) this week again, and also gained the possibility to recover from low-storage scenarios where the browser would clear indexedDB.
One of the bugs fixed might have caused a timeline corruption, so when you get the 0.2.16 update the history cache will be cleared and youāll notice a bit of delay as you do an initial sync again.
Aside from working on Hydrogen as a standalone app, Iām also making it easier to embedded in other projects. More info to come on that!
Weāve also had a priority planning this week, which spawned an updated backlog. Have a look if youāre interested what can be expected next (although be aware that the backlog has proven volatile in the past š).
Hydrogen embedded! Iām looking forward to that. Great work Bruno!
Element Clients
Delight team
Released spaces out of Beta on Web and Android..!
Following through on the beta release of Spaces - fixing more bugs and polishing on all platforms.
Web
Released Element Web 1.9.0 with Spaces enabled
Threads
Working with the Synapse team to work out what backend support will be required for threads
Steadily improving the UI
Added the ability to expand truncated quotes in replies
Cross-signing bug fixes
iOS
We refrained from releasing 1.6.0 to the App Store because of regression issues reported by TestFlight users. Huge thanks for that!
1.6.1 (Spaces and URLs preview) with all the bug fixes is being reviewed by Apple. It should be on the App Store on Monday
The implementation of user mentions in the composer has started (in SwiftUI!)
Last message types displayed in room lists have been aligned with other platforms
Tweaks to URL Previews and Contacts Access
New app navigation code architecture is coming. It will be possible soon to navigate through permalinks without losing rooms previously visited
RoomSummary storage in CoreData is still in progress
Android
Element Android is now in the 500k - 1M downloads category on the PlayStore!
Element Android 1.3.1 has been released on Thursday on the PlayStore
Now we are working on fixing issues, improving performance, and upgrading some important libraries.
The Presence support has made good progress too, it will maybe be merged for the next release.
After 4 years, matrix-email-bot finally got an update. Now at v2, the bot has been rewritten using TypeScript and matrix-bot-sdk (farewell, js-sdk from 2017). It still requires manual setup and the behaviour overall should be the same as before, though the amount of testing is somewhat minimal - please complain in #email:t2bot.io if something goes wrong.
The bot also now supports encrypted rooms out of the box, including on the t2bot.io instance. Check out t2bot.io/emailbot for information on how to get the bot set up in your room.
An (unofficial) Matrix server by and for the Newgrounds community.
This is a Matrix server with membership restricted to Newgrounds Supporters. Newgrounds is an independent arts & entertainment site that has been around for over 20 years, and I felt that its spirit of independence is a perfect match with the openness of Matrix!
The most notable feature of the server is comment rooms for Newgrounds submissions. Unlike other content-sharing sites, Newgrounds submissions donāt have comment sections, but review sections, which let you post a single comment (and optional rating) for a submission. This encourages reviews to be focused on providing constructive feedback instead of being a place for off-topic discussions. With that said, open comment systems are nice too, so this Matrix server provides it! Simply visit #portal_view_SUBMISSION_ID:ngmvs.one to view!
These comment rooms are world-visible, but (at least for the time being) only Newgrounds Supporters may join these rooms & post comments in them.
To help along with this, I made a Firefox extension to make joining these rooms a breeze: NG MVSX. Simply view a Newgrounds submission page, and click on the icon that appears in your URL bar!
Code for all components is open-sourced on GitLab.
This is all very new, so things might break! If they do, tell me in #ngmvs-public-discussion:ngmvs.one
Hi folks, Iāve been let loose on more spec things: This time Iām looking at synthetic events. The goal with this proposal is to give appservices more visibility over the innards and actions of a homeserver. When a user registers, we want an appservice to know (perhaps to send them a little greeting, or to provision some resources) or perhaps you want to clear up bridge resources when the user deactivates their account.
The hope with this proposal is that itās going to set the foundations for services to be able to hook into and provide richer functionality based upon user actions outside of rooms. It might sound a little dry right now, but eventually Iām hoping this can be extended in lots of ways and potentially do away with per-implementation modules, instead writing services that work with all homeservers.
Please give the proposal some love/feedback :)
When asked if that was a specification change he drafted because of limitations faced when trying to implement a bridge, he said:
Yeah, so itās something Iāve been plotting for a while, but internally we wanted the ability to āactā based upon signups to a homeserver i.e. sending a welcome. In the past this has been implemented client-side in Element, but that has obvious caveats.
The traditional response has usually been to write a Synapse module, but I wanted to do something that could be used on other homeserver implementations and also not have to have it co-located with the homeserver, so the natural home for this kind of logic was appservices.
There are other things there too like logouts / deactivations which are good for erasing data on a service too. Generally Iām hoping it can be extended further once itās stable, for other use cases too
Hereās your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://spec.matrix.org/unstable/proposals.
MSC3401 (Native Group Voip Signalling) has been receiving positive feedback over the course of the week. The MSC spells out how one would go about implementing native, decentralised group voice and video calls over Matrix without the need for a third-party service. This is the next step forward after the full-mesh group signalling work, as demoed in previous editions of TWIM, lands. Quite exciting stuff!
Otherwise there was another Spec Core Team retro this week. Discussion focused mainly on how to handle event types that not every implementation using Matrix may need (think pinned messages and how that might not be very useful for IoT networksā¦). Watch this space!
This is actually already implemented and enabled by default in Synapse, believe it or not. But no clients have support for it yet (there is an outstanding matrix-react-sdk PRā¦).
This is a pretty cool feature in my opinion, any client want to be the first?
MSC3401 looks like thereās a lot of work going on on the native VoIP side. I canāt wait to see what the future holds!
This week we released Synapse 1.43! This mainly contains internal changes, including those in preparation for Spaces leaving beta, but itās worth calling out that this version of Synapse now uses the MSC3244: room version capabilities API to ask clients to prefer room version 9 when creating restricted rooms.
Support for room version 9 was introduced in Synapse 1.42, so weād strongly encourage administrators to upgrade.
Perhaps more notably for Synapse developers, weāve spent quite a lot of time over the past few weeks improving the SyTest suite of integration tests. Several of the tests had race conditions which would cause them to occasionally fail when testing a multi-worker deployment of Synapse. These flakey tests have plagued our continuous integration pipelines, and are finally being fixed.
The long term plan is still to transition to Complement (written in Go) and away from SyTest (written in Perl), but we still need to ensure that SyTest is reliable in the meantime.
etke.cc now offers hosting options (and some more stuff)
Hi there,
Didnāt post updates about the etke.cc service for a while. If somebody not familiar - we setup and maintain matrix servers (based on awesome spantaleev/matrix-docker-ansible-deploy)⦠and setup VPN⦠and DNS recursive resolver, and⦠AND!!!! Provide hosting, yes. So, starting today thatās available for everyone (we offer it for some time in āwell, you know, we donāt provide hosting, but if you want it so hardā¦ā way and it works good)
Even with that update (literally the most requested thing, was in every third order we got), provided hosting considered as your own server, the only difference that you donāt pay hosting provider directly, but through us. So, you get root access to the server and we treat it as any other customerās infrastructure
Join #announcements:etke.cc room and say hello in #discussion:etke.cc
Heisenbridge is a bouncer-style Matrix IRC bridge.
Release v1.2.0 š„³
Message formatting (from HTML to text) has been drastically improved
CTCP replies are now shown correctly but still ignored
Mentions/pills always honor room nick
Plumb notices donāt loop around anymore
Self replies donāt prefix with own nick
Single line truncation works when max lines is 1
Multiple fixes to displaynames or messages containing control characters leaking to IRC
New dependency: mautrix-python
Minimum Python version requirement has been bumped to 3.7
Iāve also started releasing source archives as GitHub releases for distribution packagers and the project is published to PyPI to have more installation options.
What improvements did hifi bring to the formatting you may ask? I asked, and hifi answered:
the fallbacks are inconsistent and usually are markdown which is a lie š
replies and mentions are completely all over the place in the fallback in addition to being markdown
the unformatted html is now something in between and doesnāt do code blocks at all because those ticks are just noise on irc
it tries to look like more that you pasted long text rather than sending markdown
Thatās very considerate for IRC user, thanks hifi!
Dept of Clients š±
FluffyChat 0.41.0 has been released
FluffyChat is the cutest cross-platform matrix client. It is available for Android, iOS, Web and Desktop.
After 2+ years of development, Quaternion makes a leap from 0.0.9.4 all the way to 0.0.95. The release notes list some key improvements: reactions, Markdown, revamped timeline, user profile dialog and a lot of other things. Itās the same small and fast client that blends nicely into your desktop environment, it just got much better. Go and get it!
Congrats on the release, kitsune!
Element Clients
Delight team
Weāre testing & polishing Spaces, releasing them out of beta in the upcoming release cycle next week!
On iOS
Weāre anticipating some performance issues on a very small number of accounts which participate in a very large number of rooms. After trying the next release, if this affects you, please let us know as itāll help inform whether we cut an off-cycle hotfix or prep changes for the next release.
iOS doesnāt support pagination in the Space Summary API yet, so will only return the first 50 rooms in large Spaces when browsing. Support for this is planned for the following release.
Web
Released Element Web 1.8.6 RC2.
Fixing bugs and cosmetic issues with our Threads feature, currently in Labs.
Cross-signing bug fixes.
This week we Ran our first community testing session on 1.8.6 with members of the community. We were very pleased with how this went and intend to continue the sessions. You can help making Element even better by participating in our fortnightly testing sessions. Join #element-community-testing:matrix.org, and learn how to make the most useful feedback
iOS
The RC 1.6.0 with spaces is being reviewed by Apple
Element iOS requires now iOS 12.1 minimum
URL preview and voice message refinements
SwiftUI templates have been merged
Android
The RC 1.3.0, with Spaces, will be prepared today.
We have started to work on Presence
We are still working to improve the overall performance of the application and the SDK
Also we are doing lots of maintenance on the whole code base, and we are improving the CI.
A little synadm release went out this week. Thanks a lot to @govynnus for contributing āRegistration token managementā, itās available as a new subcommand regtok. Also some tiny improvements here and there were brought in to make admin experience even more convenient.
Ansible Contributor Summit 2021.09 is happening next week! It will be held over 2 days, on Tuesday September 28 and Friday October 1, from 13:00-21:00 UTC, and will be held on the Matrix platform.
The Ansible Community has recently adopted Matrix as an official chat platform and this is our first Matrix-powered conference. Feedback welcome! You will need a Matrix account to participate in the conversations. For more information, please see Communication - Real-time chat and the Ansible Community Matrix FAQ.
thereās a mix of stuff going on to try out, we have hack sessions on Tues that may use the embedded Jitsi etc, and talks on Friday that will be more presenter/spectator
Itās exciting to see an organisation holding an online conference on Matrix!
Adds further static type hints to various modules.
Weāve also spent quite a lot of time on SyTest, our integration test suite. In particular, many of the tests made assumptions about event processing which were not correct when targeting a multi-worker Synapse deployment. These flakey tests have plagued our continuous integration pipelines, and are finally being fixed.
These are just the highlights; please see the Release Notes for a complete list of changes in this release.
Synapse is a Free and Open Source Software project, and weād like to extend our thanks to everyone who contributed to this release, including AndrewFerr, BramvdnHeuvel, and cuttingedge1109.
Hereās your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://spec.matrix.org/unstable/proposals.
In other news, MSC3381 (Polls - mk II) receive a fair amount of attention this week. It implements inline polls via a new m.poll type and makes use of the concept of extensible events. Do check it out if youāre interested in voting through means other than message reactions!
Otherwise Alexandre Franke and myself will be looking at cleaning up the CI of the matrix-org/matrix-doc repo next week, as well as continue to move the infrastructure for the new spec release forwards.
This one is entirely new to me, and has some slight overlap with some work for MSC2762: Allowing widgets to send/receive events, where we were thinking about how a widget could act as a calendar using Matrix rooms and events as a calendar backend.
The Synapse team is busy gearing up for 1.43.0 next week, which will make room version 9 the default for newly created restricted rooms, among other things.
Weāve also been doing quite a lot of work on Sydent. Notably, last weekās 2.4.0 release introduced a few regressions which have been resolved in subsequent point releases. The one-shot case folding migration script for Sydent is still performing unexpectedly slowly; look for that to be resolved soon.
As the end of the year approaches, now is a good time to ensure youāre ready for the deprecation of PostgreSQL 9.6 (November) and Python 3.6 (December). Do you have plans to upgrade to Pg 10 and Py 3.7 or newer? If not, thereās no time like the present! š
Lastly, Hacktoberfest 2021 is less than two weeks away! Many Matrix projects intend to participate, including Synapse.
With rooms version 9 as the default, it feels like Spaces are trying hard to escape beta!
And yet again more Kubernetes Helm Chart updates this week, with element-web being bumped first to 1.8.4 and then 1.8.5. More improvements for the new ingress object in K8s 1.19 also landed.
Dept of Bridges š
Heisenbridge
Heisenbridge is a bouncer-style Matrix IRC bridge.
mautrix-hangouts has turned into mautrix-googlechat. Itās still in alpha stage, but text messages work in both directions, media from google chat works and threads from google chat are bridged as replies.
Dept of Clients š±
Cinny v1.3.0: Initial Space support and notifications
Released 0.2.9 & 0.2.10 this week with the main thing being improvements in preventing scroll jumps when resizing or loading more content in the timeline. Not 100% of scroll jumps will be solved with this release, but it should be improved a lot. Please report any issues you may encounter in this area! There were also a few bugs fixed, see the linked release notes. Try it out at hydrogen.element.io!
Beeper is a unified chat app built on top of Matrix. Weāve created 10+ open source Matrix bridges and integrated them into an easy to use all-in-one service which does not require setting up your own homeserver. You can learn more at beeper.com.
Weāve been hard at work for the last few weeks and have a number of updates weād like to share across all our clients and bridges.
New verification flow for Desktop, Android, and iOS! Logging in and verifying your session is now super easy to do. This is extra important for Beeper because we enable secure backup by default and require all users to set up a security key.
Desktop
Added the ability to view your rooms using our Smart Inbox that places the most important messages at the top, or with Classic which leaves the room in a reverse chronological order.
You can now select network by network which messages should appear in your inbox using our Inbox Filtering feature
We now have beta support for Custom CSS theming! Check out some of the themes that have already been made by the community. https://gitlab.com/beeper/beeper-themes
Previously we only supported DMs for Discord out of the box, but now you can pick and choose which Discord servers to sync into Beeper
iOS
A complete beautiful rewrite of the Room List using SwiftUI. The room list now looks much more native to iOS, while still feeling like Beeper.
Android
Redesigned room list: we started a redesign of our Android app and adopted the Material design language.
Integrated Android SMS bridge: Our previous Android Messages bridge was built on a shakey puppeteer foundation, so we rewrote it. Our new Android SMS uses native APIs to send/receive SMS. RCS remains elusively out of our grasp for now. We open sourced our bridge at https://gitlab.com/beeper/android-sms
We are hiring! Come join many other Matrix community members who have joined the Beeper team including @tulir:maunium.net, @annie:beeper.com, @kilian:beeper.com, @spiritcroc:beeper.com and @sumner:beeper.com (who replied to our last TWIM job post and got a job at Beeper within a week!)
We are hiring senior iOS, Android developers and a DevOps/SRE (preferably in North/South America timezone)
Nheko got a lot more colorful this week. red_sky (nheko.im) and LorenDB finished up the jdenticon support. This means instead of the first character of a users display name, you now have the option to see a colorful avatar for users without an explicit avatar. You may have seen something similar on Github and other platforms. Currently this needs the qt-jdenticon plugin, which is a bit troublesome to install correctly, but we should improve that in the near future.
Prezu added a homeserver entry field to the room directory, making it much more useful (no history yet though). Thulinma added a /goto command to navigate to specific events or room and fixed scrolling to a specific event (in the past it only approximately scrolled to the right location). Symphorien added the Alt+A shortcut to navigate between rooms with active mentions and notifications. Additionally Priit completed the Estonian translation.
Additionally we released a security fix on Monday (together with a few other clients). We only released a fix for the master branch in Nheko instead of also the latest stable release. This confused a few people, but I hope my explanations made sense. The gist of it is:
On the master branch the local homeserver admin could force Nheko to forget which identity keys it saw for a user and as such insert a new device with the same device id, but attacker controlled identity keys and request old encryption keys from Nheko. In Nhekoās case we had some protections against that, but if the server sent a device_list.left event for that user, Nheko would delete those protections. From our understanding this could not be abused over federation.
On 0.8.2 this can also be abused, but 0.8.2 does not implement key sharing completely. It can only forward the currently in use encryption key, not historical ones. As such the impact in our opinion was too limited to release a security fix. 0.8.2 does not allow you to send encrypted messages only to verified devices as such the homeserver admin could always insert just a different device to get access to new encrypted messages. Because of that we have a big warning in the README and when enabling encryption in 0.8.2, that one should not rely on the security of the E2EE implementation in it. We are aiming to have stable and secure E2EE in the next release (and so far it is looking good), but if you are using 0.8.2 I can only repeat, that it wonāt protect you from an attacker even without the disclosed security issue.
I hope this clears up some of the confusion. Feel free to visit us in #nheko:nheko.im and tell me, that I am wrong.
Element Clients
Delight team
Testing and polishing of Spaces.
Web
Released Element Web 1.8.4, with an important security fix
Released Element Web 1.8.5.
Improvements to replies.
Continuing discovery of threads.
Cross-signing bug fixes.
Weāre going to involve the community in testing the product. More details to come early next week if you want to lend a hand!
iOS
Made another Release candidate 1.5.4 because of reported regressions. It will be available on the app store on Monday
URL preview moved out from LABS
New screen templates with SwiftUI, mocked data, unit and UI tests are almost there
There was a new version of OLMKit with the support of fallback keys
The crypto part of the SDK now support fallback keys, key backup cross-signing and device dehydration
Android
Released Element Android 1.2.2, with an important security fix
Working on improving the build time and the dependency management
Investigated performance issue on incremental sync
This week saw two releases of libolm, a library that implements olm, megolm, and some other Matrix-related encryption functions. The main changes in version 3.2.5 are new functions for getting error codes rather than error strings so that implementations donāt need to rely on string parsing to decode errors, and added support for fallback keys in the Android and iOS bindings. There were also improvements in error handling in the unpickling functions, and the shared library no longer exports certain private symbols, which caused problems when those same symbols were exported by other libraries. The initial implementation of this last change caused build failures in some environments, so version 3.2.6 was released to fix this.
Polyjuice is a collection of Matrix libraries in Elixir.
Polyjuice š§
A few from the wizarding world this week.
The Polyjuice project wades further into bad pun territory with a new project: Polyjuice Draughts, a set of checkers to verify that a homeserver is set up correctly and is accessible for clients and federation. It is similar in goal to the Matrix Federation Tester, but also checks client connections. It can either be run from the command line, or it can be used in a Matrix room, thanks to Igor, by sending a message of the form !servertest <servername> in a room that has an appropriately-configured bot in it. There is currently a bot in #synapse:matrix.org that can be used.
As you can see from the screenshot, my server isnāt quite set up correctly, and I should fix it some dayā¦
Polyjuice Client 0.4.3 has been released. This release adds functions for getting room membership (thanks to multi prise) and checking the server spec versions, along with some bug fixes.
I have converted the script for auto updating the Element-web instance to latest version from Gist to the full Git repo MurzNN/element-web-update and added support for .env file to set desired variables.
This is a bash script that checks the new released version of Element from official Github repo and if it differs from installed - updates the local files with deleting old version (to cleanup old files) and unpacking new one, but with keeping the config files by mask config*.json.
You can put it to your crontab.daily and got an always fresh Element with forgetting about manual update routine.
I created a bot to assist with sending standup posts to a room. It reminds you to write a standup post, and then asks you what you did the previous day, what you intend to do today, if you have any blockers, and if you have any other notes. Then it posts a nicely formatted standup post to a room which you can configure.
I am super happy to finally give you another update on TheBoard, due to holidays during the last weeks I had less time to work on TheBoard. But now there still accumulated enough changes for a little Update:
I experimented what technologies I could use for the still required GUI elements. A new User List was implemented using Vue.js. Vue seemed to be a little overkill for the kind of GUI required in the case of TheBoard. So I re-implemented the user list with react-no-js.
I am happy with react-no-js and it is used for a user list plus a tool settings menu on the right hand side of the canvas.
The tool panel in particular opens up a lot of possibilities. The eraser already makes use of it by giving the option to only delete specific item types (Image, stroke or text). This can be very handy if you want to delete strokes drawn on top of an image without deleting the image as well. What can be deleted is highlighted by a new filter system which allows to make any modification to objects selected by a filter function (see the attached image)
Other small changes:
Animated camera movement (for a upcoming āfollow other userā feature) currently used for the Go Home Button
Opening a board now loads at the last edited location
The touchscreen navigation (zoom/pan) was re-implemented and should now work much better
The Board is very exciting! I could see in the planned use cases that Timo already intends to make a widget out of it. It would be very useful for real-time collaboration, but thatās not all! When asked if a standalone app will come, Timo confirmed:
Indeed. I wasnāt thinking about a builtin home-server yet. But a standalone app is still planned because I want the app to be able to manage different boards. Therefore I need to be able to control room creation and listing rooms. It should basically feel like onenote if you intend to use it like that.
@s7evink The game is called AAGRINDER, hosted at aagrinder.xyz, the code is here, the bridge implementation is here, wiki is here. The game is a text-based sandbox multiplayer browser game that I (Maze) have been building for the past 3 years. Built from nothing, no game engine. It generates an infinite procedural terrain to venture in. The integrated chatbox is nothing special but itās really nice to have it bridged to Matrix now, itās less lonely when playing alone. The appservice bridge creates users matching player name and color. Display names from Matrix are presented in the same color as in Element.
Hopefully youāre able to extract some useful information out of this ^^
I love the retro vibe of the game, itās really cool!
Third Room is an experimental metaverse client Iāve been working on for the past couple weeks. It combines three.js and Matrix to create 3D voice chat rooms where you embody an avatar.
Thereās a lot more info in my talk from last night at the Open Metaverse Interoperability Demo Night (my talk starts at 37:43)
The future is now, Iām really thrilled about Third Room!
Final Thoughts š
Beeper mentioned they have several positions open, and Element is also talents hungry. Iām particularly ecstatic to see that developing skills around Matrix can get people jobs. Of course I encourage strongly people to experiment with the protocol and use it in all sorts of crazy ways!
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.