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.
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 š.ā
Hereās your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://spec.matrix.org/unstable/proposals.
MSC2582 (Removing mimetype from EncryptedFile object) was one of those MSCs that were relatively small, but had been languishing for ages. Partly because it required client implementations to update, but also partly because one needed to go in after a while and actually confirm that all known clients had updated. @uhoreg took up the mantle on his own to do so, and as a result this MSC has hit FCP and is soon to be merged. Thank you!
Alongside MSC2957 and MSC3265, this MSC is requesting a better way of communicating oneās password to the homeserver without sending it in plaintext (over TLS, hopefully).
Remember that this is only done in exchange for an access token, which is then used for all subsequent requests. Still though, I can see the merit!
Synapse 1.41.0 is out! Check the release announcement to find out about all of the details, including progress on MSCs, great new Admin APIs, and the ability to handle the /createRoom endpoint on workers. As mentioned in last weekās TWiM, Synapse 1.41 uses MSC3244: Room version capabilities to tell clients that they can and should use Room Version 8 when creating restricted rooms. The future is here!
Weāve also stopped publishing Debian packages for Ubuntu 20.10 (Groovy).
ā ļø We expect to publish a security release Synapse 1.41.1 on Tuesday, 31 August which fixes two moderate severity issues.
Lastly, the Synapse team would like to extend a warm welcome to Sean Quah, who joined Elementās backend team this week. Welcome, Sean!
This release adds more functionality for spaces, enhances the html viewer, adds a brand new video player and brings some improvements for voice messages. Thanks to everyone involved!
Please note: It will take some days until it arrives in all appstores.
All changes:
change: Nicer design for selecting items
change: Placeholder at username login field should be just username
chore: cleanup no longer used translation strings
chore: switch image_picker back to upstream
chore: update flutter_matrix_html
chore: Update matrix sdk to 0.3.1
feat: Add option to not autoplay stickers and emotes
feat: Add remove rooms to and from spaces
feat: Add video player
feat: Cupertino style record dialog
feat: Display amplitude
feat: Implement official emoji translations for emoji verification
feat: Nicer displaying of verification requests in the timeline
fix: Allow fallback to previous url if there is no homeserver on the mxid domain
fix: Correctly size the unread bubble in the room list
fix: Design of invite rooms
fix: Disable autocorrect for the homeserver url field
This week Tobias implemented blurhash in NeoChat for a smoother image loading experience. Tobias also continued working on E2EE and this past week his focus was on decrypting encrypted files.
Ement.el, a Matrix client for Emacs, gained some more improvements this week:
Multi-account support was merged, so you can now use multiple accounts at the same time. You can even be in the same room in two different accounts, at the same time, in side-by-side windows (which is useful for testing). (Note that existing users will need to log in again, because the format of the saved-session file changed.)
Rooms you have been invited to now show up in the rooms list, and you can join them by clicking a button in the roomās buffer.
Encrypted rooms now display a warning in the header and suggest that users consider using Pantalaimon.
Membership events are now formatted more usefully, similar to Elementās style.
Completion for room and user names and IDs is implemented using standard Emacs commands and bindings (i.e. C-M-i by default).
The last-read marker may be jumped to, even if itās at an earlier event that has not yet been retrieved.
Emotes (i.e. /me-style messages) can be sent by pressing e.
Timestamps in the room list are shaded according to how āhotā (i.e. recently updated) the room is (see screenshot).
Nheko now supports uploading to online key backup and warns you before enabling it, that we donāt recommend using the asymmetric version. If you update to one of the current builds (and or the next version), you will also experience a bit longer load times on first startup. That is because we force-cleared the cache to be able to handle the new goodies like spaces and sticker/emote-packs. In the best case, everything is seamless.
We also had contributions by various people:
resolritter cleaned up that while tab moved you down most popup lists, it didnāt move up when shift was pressed.
Harmathy extended the FAQ to answer commonly asked questions like āDoes Nheko support E2EEā or āWhat commands are supportedā. Donāt worry, we know most of you wonāt read that and will still answer that question when you undoubtedly come asking it again. We just can now be even more passive aggressive than just pointing at the right wiki page. Instead we will point at the FAQ now, which will point at the wiki!
thombles made the emoji completer behave more nicely. Instead of jumping to the bottom left corner before closing, it will now just close. It should also now behave correctly when selecting text.
alfasi updated the install instructions for Gentoo.
Iām not sure we have ever seen that many new faces contributing to Nheko in a week, Iām pretty happy to see that!
Fractal
Busy week in Fractal land! It is the end for GSoC, but itās not really over. While some merge requests from our interns are still ongoing, Julian merged a bunch of them. On Kaiās side, the long awaited Room details are finally here. Alejandro, on the other hand, landed code to get display name and avatar of accounts at startup.
Circles is a project to build a secure, end-to-end encrypted social network on top of Matrix. The iOS app is currently in the final stages of beta testing in preparation for a 1.0 release.
Updates this week include:
Fixed a bug that prevented some new users from registering. If you tried to sign up last week but the email validation failed, please give it another try with the latest build.
Cleaned up the āHomeā tab for a simpler, cleaner look.
Fixed a bug where the summary of recent activity was failing to load on app startup. Also added a manual ārefreshā button as a fallback.
If you would like to try the latest Circles beta (v0.93), you can get it from Apple here
Element Clients
Updates from the teams
Delight team
Room version 8 was marked as the preferred version for MSC3083 restricted rooms on matrix.org and in Synapse 1.41, released this week. This means Element clients can now show UI to create restricted rooms within a Space, and prompt users to upgrade rooms if necessary when making them restricted.
Improvements to the performance of the room summary API.
Lots of testing of Spaces in anticipation of it leaving beta.
VoIP
Fix cases where a call ringtone would continue even after the call was answered.
Add active speaker indicators when a user in a call is currently talking.
Working on showing call duration in call tiles.
Web
Weāve released 1.8.2 RC3 which includes fixes to windows font rendering, blur hashing and accessibility improvements, and other bugs.
Our internal threads prototype is in code review.
This week, weāve been doing more work on threads, fixed some more cross-signing bugs, iterating on more compact replies, and investigating our process for translations.
iOS
Continue to work on URL preview.
App Navigation improvement: Continue to work on room navigation.
Account notification settings are now available.
Voice message rendering and playback fixes have been made.
We added a banner to advertise that iOS 11 will be dropped soon.
Room creation: prevent room duplication on creation.
Media upload sizing: Continue to improve media size selection.
Android
We are still improving the experience with Spaces
Notifications setting will be updated in the next release, with the ability to get notified when keywords are included in any message (only on un-encrypted rooms for now)
Working on Olm fallback key support
Besides that we are fixing bugs across the application and the SDK. We have fixed the issue of crashing when opening a room on devices running API 21. The fix will be in the next release.
Dept of SDKs and Frameworks š§°
Ruma
Ruma is a set of Rust library crates around Matrix
Itās been so long since our last update that I couldnāt possibly list all of the individual changes, but hereās a rough overview of the work since then (three months ago):
Thereās been loads of bug fixes, many compatibility improvements and at least one large refactoring. Weāve been much faster about releasing changes to crates.io after ruma 0.1.0, now weāre already at ruma 0.4.0 (!); the changes needed to upgrade are really not that significant though. Notable areas of improvement are
UIAA: No more stringly-typed auth type + map of properties. The AuthData enum that holds the authentication information clients send to servers now has one variant for every auth type defined in the spec.
Event relations: These used to be serialized wrongly for encrypted events and were only (de)serializable as part of a larger event (making using them in custom ways impossible). Both of these issues were fixed.
If you want more detailed updates about Ruma, please watch our repositoryās GitHub releases, since nobody in the project currently wants to write regular blog posts or TWIM updates (if you are interested in changing that, get in touch over at #ruma:matrix.org).
This week a new stable version of libQuotient, 0.6.8, has been released. While the main focus has been fixing bugs and sustaining the codebase, one significant highlight is that read receipts and fully read markers are distinguished now, which should improve interaction with other clients that has been treating them differently for quite some time now. This version is anticipated to become the base of the upcoming Quaternion 0.0.95.
Hi everyone! Did you ever feel lost in the Matrix world? The room directory is big, but itās still hard to find something you like. Or are you a room moderator, but there is not much activity in your room because it doesnāt have enough users?
This is why I want to share rooms (or spaces) I find interesting.
āChannel dedicated to games running in terminal environment (or one that looks like terminal) As long as the game could be easily ported to terminal, it belongs here :) Telegram: t.me/cligamingā
If you want to suggest a room for this section, tell me in #roomoftheweek
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.