Dept of Spec 📜
Andrew Morgan (anoa) says
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/proposals.
MSCs in Final Comment Period:
- No MSCs are in FCP.
event_property_containspush rule condition
- MSC3873: event_match dotted keys
- MSC3758: Add
event_property_ispush rule condition kind
- No MSCs were closed/rejected this week.
Review this week from the SCT focused on the future of OIDC and logging in via a QR code (MSC3906) - a feature other platforms have and one I would love immensely. Fixing notifications (MSC3966, MSC3873, MSC3758, MSC3952, MSC3958) as per last week, as well as trying to finally get MSC2677 (spec'ing the current state of Annotations and Reactions) into FCP.
Random MSC of the Week
The random MSC of the week is... MSC3972: Lexicographical strings as an ordering mechanism!
While there already is an MSC for a top-level ordering of Spaces in use across some client implementations today (MSC3230), the algorithm recommended for clients to implement apparently has some consistency flaws, leading to edge cases. MSC3972 attempts to address this by providing a different algorithm that does not have these flaws. A real-world implementation of the algorithm is also available today in Kotlin at https://github.com/Dominaezzz/MatrixSort.
Neither of these algorithms have been merged to the spec yet, but this new MSC may finally push this conversation forwards! I recommend client developers give it a read and leave their feedback as Pull Request Review comments on the MSC.
Dept of Servers 🏢
An open source Matrix homeserver implementation written from scratch in ANSI C and designed to be lightweight and simple, yet functional
Jordan Bancino reports
Hey everyone, it's been a while since I've posted an update here, but I'm pleased to report that progress on Telodendria is still steady. Here's a small glimpse into what's happening with the project:
- v0.2.1: The second major release of Telodendria was published earlier this week. Telodendria still isn't much yet, but the user authentication section of the client-server specification is just about complete. This means you can register for accounts, log in and get access tokens, and then log out. All the stuff that goes with that, including the static login fallback page, and user interactive authentication is in place.
- What's Next: I'm hoping to start working on the account management endpoints next. I also want to start building out an HTTP client for federation, and I want to move the configuration file into the database, so that Telodendria is configured via an admin API endpoint instead of a file. The thinking here is that this enables Telodendria to be configured at runtime, without having to restart the process to apply configuration changes.
- Help Wanted: As always, I could use your help. This is a huge project, and I am very busy so I can't dedicate as much time as I'd like to it. If you find Telodendria interesting and want it to continue, feel free to join us over in #telodendria-general:bancino.net, write some code and documentation, donate to the project, or any and all of the above!
Synapse is a Matrix homeserver implementation developed by the matrix.org core team
Welcome to another Friday and another edition of the Synapse section of TWIM. This week we've released Synapse v1.79.0rc1.
Some notable highlights include:
- Added two new Third Party Rules module API callbacks
- Added experimental support for MSC3967 to not require UIA for setting up cross-signing on first use.
- Fixed a long-standing bug where an initial sync would not respond to changes to the list of ignored users if there was an initial sync cached.
- Fixed a long-standing bug where the user directory search was not case-insensitive for accented characters
- Documented how to use caches in a module
A performance-oriented homeserver with minimal dependencies.
Jason Volk reports
This week Construct gained support for freshly minted MSC3758 and MSC3966 enriching the pushrules subsystem. I'd like to thank Giovanni Bottaro for contributing a patch which fixes updates to the public rooms directory. I'd like to thank @qg:schildi.chat for reporting two other issues which I've been able to push fixes for this week. I'd also like to thank Yan Minari for refactoring the nix build up to date in preparation for Construct's 1.0 release.
The saga continues over at #construct:zemos.net
Dept of Clients 📱
A terminal-based Matrix client that uses Vim keybindings
iamb had a new release this week. Release v0.0.6 includes:
- Support for tab completion of usernames, aliases, and commands.
- A new command for creating rooms and spaces
- Bug fixes for edits and creating new direct messages
- Improvements to text wrapping in messages
- NetBSD's pkgsrc-current now includes a package for iamb
mnotify gained a few features:
- Attachments can now be sent to a room with
mn send -r "$ROOM_ID" --attachment CAT.jpg.
mn syncgained a flag
--rawwhich prints all received events, including e.g. presence or typing.
mn roomscan list all rooms you are in, including room members and avatars.
chooj, the Matrix client for KaiOS feature phones, has seen many changes in the last few weeks. Many bugs were fixed and many others are probably added. We now support many other events other than message events which you can view in the rooms plus an experimental image viewer to better investigate the received images. Other than that, by removing the files KaiOS doesn't use, the production bundle size is half now. A big internal change also happened and still is not finished yet. With the assist of Simon Laux, a big portion of chooj is now a separate library which makes maintenance easier and also lets other KaiOS apps use them. I have written my plans for chooj in my last post in the BananaHackers blog. If you like to see Matrix chat on the KaiOS feature phones, you can donate an amount to help with the development of the project. Or you can donate me a debug enabled KaiOS phone with the mentioned features.
Desktop client for Matrix using Qt and C++17.
We've had some fun and useful things happening in the past two weeks!
- red_sky (nheko.im) worked on automating the release process to automatically create a release when a tag is pushed. This might not sound like much, but it makes life easier for maintainers who would otherwise have to waste time manually creating releases. After all, why would you want to write release notes when you could be writing code?
- Nico tweaked styling for HTML tables to increase the padding. Thanks to Cadair for the suggestion!
- Nico also fixed a bug that showed avatar changes as somebody joining a room. I seem to recall this also happening when users changed their display names, but I can't reproduce that behavior. Either way, it is nice to have this fix in place!
- I worked on closing some of our issues, and I'm happy to report that there are fewer ways to be unpleasantly surprised by the UI. For example, if you have turned on the setting to make emoji-only messages larger, all other emojis will also get a bit of a size boost to make them easier to read.
- On that note, I recently went through the issue list and closed a number of outdated issues that had already been fixed, because 260+ issues is obviously too many for any self-respecting project... right? ;)
- I also overhauled nheko's behavior when you attempt to use an invalid /command. Originally, nheko would eat any invalid commands (e.g. sending
/foowould clear the input box but would not send a message). Now, if you type
/foo, you will see a warning informing you that you are about to send a message that says
/foointo the chat instead of running a command
/foo. If you choose to disregard the warnings and hit Enter, nheko will indeed send a message saying
But that's not all: this week, mtxclient gained the ability to properly handle
m.room.messageevents that have an unknown
msgtype. With that in place, I'm working on implementing that on the nheko side. Once this work is done, you will be able to read messages that others send from Element with fireworks! Furthermore, I'm adding a bonus feature to nheko: as a proof-of-concept for fully implementing this unknown message handling, I've got a working implementation of Element's rainfall effect for those of you who like fancy effects! (All the rest of you can just turn those off in the settings, I guess.)
A note for our Mac users: somebody opened an issue last week notifying us that nheko couldn't be installed on OS X 11.1. Nico has fixed this, but you will need to either wait for the next release or install one of our nightly builds (#nheko-nightlies:neko.dev).
Matrix client for Emacs
ement-room-override-namesets a local override for a room's display name. (Especially helpful for 1:1 rooms and bridged rooms. See MSC3015.)
- Improve display of room tombstones (displayed at top and bottom of buffer, and new room ID is linked to join).
- Use descriptive prompts in
ement-view-spacewhen called from a room buffer. (Thanks to Richard Brežák for reporting.)
- Don't call
display-bufferwhen reverting room list buffer. (Fixes #121. Thanks to mekeor for reporting.)
- Retry sync for network timeouts. (Accidentally broken in v0.6.)
:roomargument to put on a room's account data.
Feel free to join us in
Element Web/Desktop (website)
Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!
- We started the process of wrapping up the remaining smaller – and non-essential – leftovers from the Gitter migration support in Element Web and are hoping to complete them next week
- Work on moving our packaging into the cloud is progressing and we also started to improve our infrastructure for updating the GPG key for our Debian packages
- Further investigation on the remaining stuck notification issues has indicated that spec changes around the handling of relations inside threads will be needed. We're planning to work on these soon.
- The React SDK changes for MSC3952 (intentional mentions) are getting ready to land
Element iOS (website)
Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!
- This week we continue to polish Element X. It got a new Rust SDK version that fixed known bugs in the new Sliding Sync API implementation. A new public TestFlight (1.0.24) will be available during the week-end, after Apple approval.
- We resumed the work on push notifications on Element X and experimented the new instant messaging push notification APIs.
- On Element land, a new version, 1.10.4, will be available on Monday. Applications with analytics enabled will gradually use the new crypto stack, coming from the matrix-rust-sdk crypto crate. Anyone can enable it from the LABs settings at any time.
Element Android (website)
Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!
- We have just released Element Android 1.5.28, it should be pushed to production next week. Element Android is now mainly in maintenance mode.
- More and more people are working on Element X Android. We are working on updating the design, and refining the architecture of the project. It will soon be possible to verify a session, and create a room from this client. We are also preparing the work to be able to receive Push and display notifications.
Dept of SDKs and Frameworks 🧰
Multiplatform Kotlin SDK for Matrix
Just another small release of Trixnity (v3.5.0):
- expose more device trust level information (breaking change)
- fix too long open transaction in IndexedDBMediaStore (relevant for larger media files)
- allow cancel device verification before any device answered
Next-gen crypto-included SDK for developing Clients, Bots and Appservices; written in Rust with bindings for Node, Swift and WASM
Jonas Platte says
- The PR for client user avatar URL caching mentioned last week has been merged
- We fixed a long-standing CI problem where coverage data would frequently fail to upload
- Our state store / cache abstraction was improved (#1593, #1629)
- We fixed some races between
- Plus lots of purely internal improvements!
Dept of Ops 🛠
Command line admin tool for Synapse (Matrix reference homeserver)
It's been some time since
synadmlast showed up on TWIM, it was around summer 2022. The biggest news is that Ascurius and me just welcomed a new member to the team: jacksonchen666. We reached out since he seemed to care about
synadm. He had submitted a feature but we also caught him tidying up "unloved" issues. He has a good sense for concise solutions and accurate documentation. He runs a website and a blog where he talks about "things".
Here's more we'd like to spread:
- A random list of new commands, read details in the docs to learn what they do:
synadm notice send,
synadm user 3pid,
synadm user auth-provider,
synadm room block/unblock
synadm room block-status,
synadm media unquarantine,
synadm user modify --user-type ...,
synadm user deactivate-regex.
- A new output mode
minifiedwas added and the original
jsonmode was improved to now produce nicely human readable json.
- We finally have a contributing documentation and hope it'll make collaboration with our contributors even better.
- We introduced an auto-linter based on
flake8into our CI pipeline to catch code formatting issues quicker.
- The new Scripting Examples chapter. Please submit your one-liners or other helpful scripting examples via a pull-request or just let us know in #synadm:peek-a-boo.at
By the way, jacksonchen666 searched for
synadmoccurrences in the TWIM history and we found an article "next to us" about the Matrix Community Summit 2022 that took place in Berlin last summer. It reminded us that it was a blast! Thanks dear organizers, we hope you manage to do it again! Here's some musical memories in the name of our reference homeserver.
Matrix server setup using Ansible and Docker
To get started, see our Setting up Sliding Sync Proxy documentation page.
Dept of Bots 🤖
This is not a project but an idea nevertheless: Produced a quick and dirty PoC of an OpenAI chat completion tool used from within Element Web/Desktop. Video can be found here https://github.com/matrix-hacks/openai-reply-generator
explored making it shippable via bot, bridge, widget, and puppet-client but i have yet to find an experience that i like completely yet but still worth sharing how easy it is to test ideas in Matrix (which through bridges, can touch all media)
Dept of Interesting Projects 🛰️
Effektio is now acter.global 🚀
Shortly after releasing our whitepaper end of last year, Effektio was approached by another organization, who has been building a NGO communication platform for a few years called Acter. Acter wanted to move away from their current centralized stack and had found Matrix.org 's Federated Model to be their preferred ideal. Very quickly within the talks that followed it became clear that both organization have the same goals and visions for the future and are perfectly matching in terms of what they already bring and what each lacks: Effektio has the technological stack, expertise and ability to build the product while Acter has existing a network of organizations, partners and even existing users, who are happy to provide feedback. Long story short, we decided to merge both into a newly funded Acter Association, which we established Jan 1st, developing the next (third) generation of the Acter Platform ("A3") on top of the existing effektio tech stack. Since then a major part of our work has been merging all the admin and tech stuff, up to moving the github repo over to acterglobal/a3, where you will find it from now on.
Next to that, we still have continued working on the product itself. Among other things we have merged the first implementation of the Adaptive Layout in A3 this week, implemented the next acter object, Pins, added Rageshake Bug Reporting to the nightly builds, started out with the new Templates infrastructure and improved our quality assurance by reactivate rust integration tests, add widget unit tests and a new cucumber desktop tests infrastructure.
More details on all of these in todays update in our very own news channel: https://matrix.to/#/#news:acter.global
A privacy focused social media based on MATRIX
Henri Carnot says
today is a big day for MinesTRIX because it's finally possible to test it as we are now in Flathub! https://flathub.org/apps/details/fr.henri2h.minestrix
In parallel, I have been quite a lot of work in the background. And in last version (v1.6.5), we have:
- Switched to Material3 and redesigned the app navigation. Removed black theme for more simplicity.
- It is now possible to set permissions (room visibility and powers levels) for groups and feeds.
- Role & permissions view for room settings is now more intuitive.
- fine tuned the new feed indexing systems. Should be more stable now.
- The settings page got some love and now display all the sessions and their status (verified or not). It is also possible to logout all 90+ days sessions.
- new message search view for not encrypted conversations.
- fixed notifications count for rooms
- better experience for searching user or rooms.
- new page to list feeds and groups
- it is now possible to unfollow someone
- fixed SSO login on web
- It's now possible to switch account from home page for easier multi account usage.
- support for video messages
- speed up room media loading for the not encrypted rooms by requesting events directly from server
- allow resizing the settings and chat view
Dept of Ping
Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.
Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.
That's all I know
See you next week, and be sure to stop by #twim:matrix.org with your updates!