This Week in Matrix 2020-08-14

14.08.2020 00:00 โ€” This Week in Matrix โ€” Ben Parsons

Matrix Live ๐ŸŽ™

No new Matrix Live this week, we have Open Tech Will Save Us #5:

Also, I recommend Matrix Live from last week, with Timo and Matthew discussing Conduit/Rust/Homeserver dev. Conduit is absolutely motoring, as you will read below.

Dept of Status of Matrix ๐ŸŒก๏ธ

Linkรถping University has now soft-launched Matrix

Alexander Olofsson said:

In completely unrelated news to my earlier K8s updates, Linkรถping University has now soft-launched Matrix for use both internally - and hopefully with other universities and institutions in the future.

Se the k8s updates from Ananace below. Is this the first .se university offering Matrix? Also, great hostname!

Dept of Spec ๐Ÿ“œ

SAS Emoji Translations

TravisR said:

We've finally opened up https://translate.riot.im/projects/matrix-doc/sas-emoji-v1 to translate the emoji used by clients to ensure that users are securely verifying each other. The idea is that clients should always have a consistent name for these emoji, even if developed by completely different teams. If your client supports encryption verification and has translations, please transition to using matrix-doc for your translations: https://github.com/matrix-org/matrix-doc/pull/2728 has some details, and #matrix-spec:matrix.org would love to help out.

2020-08-14-Ly4te-image.png

Spec

anoa said:

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.

MSC Status

Merged MSCs:

  • No MSCs were merged this week.

MSCs in Final Comment Period:

  • No MSCs are in FCP.

New MSCs:

Spec Core Team

Some of the team was on holiday last week, hence the noticeable lack of progress ๐Ÿ˜‡ In terms of Spec Core Team MSC focus for this week, we're keeping on with the same two as last week: MSC2674 (aggregations pt1: relationships) and MSC1544 (QR code verification).

2020-08-14-i2G3v-stacked_area_chart.png

Dept of GSoC ๐ŸŽ“๏ธ

Opsdroid(GSoC)

tyagdit announced:

Matrix database

  • The port to nio is complete and most of the functionality has been worked out

  • Encryption support is being worked on

  • The module now has a delete method

  • Some testing is remaining

  • Check out the progress here

End to End Encryption with matrix

  • Opsdroid will soon get a new release with the new connector

  • For now it can be used through the master branch of opsdroid

Dept of Servers ๐Ÿข

Synapse

Neil reported:

We have a new RC out, edited highlights include

  • lots of async/await changes, 27 separate PRs (thanks Patrick)

  • improved logging performance, this is in part to reduce IO but also to reduce the total amount logged. Weโ€™d be really interested to get some feedback on if the changes help. You may also want to take a look at our new logging defaults to see if they would help reduce total disk space usage.

  • Further improvements to the Admin API allowing admin to optionally purge rooms on deletion.

Expect 1.19.0 to land early next week.

Aside from that Erik has been continuing with sharding the event persister, this is a big job, so weโ€™re still a little way off having something to ship, but Iโ€™ll keep you updated.

Big news this week, after spending a good chunk of time trying to rework notifications to make the UX more intuitive, we have decided that the best (and only) way forward is to completely rethink how the push rules work. Rich is currently redesigning the whole thing, and once done weโ€™ll resume on the client side.

Having spent much of the past 3 months trying to improve the performance of large scale instances we will soon start looking at improving the out of the box experience for smaller installs and are in the early stages of thinking about what that might look like. Iโ€™ll update more over time, but the two obvious use cases to target are

  • Federating instance, with 1-5 users, resource constrained.
  • Federating instance with a few hundred users.

Our (relatively small) changes to logging in 1.19.0 are the first signs of this shift. We still need to ship event persistence sharding and also move more functionality from the main process (dependent on async/await), but once done it clears the way for new projects.

2020-08-14-2cR_s-image.png

anoa brought it to our attention that this graph looks like a "ocean-beach waterline dropoff".

Conduit

Conduit is a Matrix homeserver written in Rust https://conduit.rs

timo reported:

This week I worked a bit on federation! Last week we were able to query room directories over federation; This week I looked into what's needed to join one of those rooms:

  • Resolve room aliases over federation

  • Send make_join request when a user tries to join an unknown room

  • Use make_join response to create send_join request (insert origin, origin_server_ts and add hashes and signatures)

After implementing all those things, I could actually see Conduit's join event on Synapse!

2020-08-14-bRuiV-Screenshot_20200814_125755.png

Of course a lot more work is needed to make this really work,

like creating the room on the Conduit side and sending and receiving federation transactions, but this is a start.

Other news:

  • Docker support (thanks to @weasy, @valkum and @paul)

  • Room upgrade support (almost done, thanks to @Faelar)

Thanks to everyone who supports me on Liberapay or Bitcoin!

Dendrite / gomatrixserverlib

Dendrite is a next-generation homeserver written in Go

Neil Alexander told us:

This week we've been closing off some of the remaining tasks for end-to-end encryption and working on tasks from our beta milestone task list.

Changes this week include:

  • New format for the Dendrite configuration file, which is correctly broken up into configuration per-component

  • Support for server ACLs has been added

  • Significant refactoring of the HTTP routing and API setup to improve flexibility and separation of internal and external APIs

  • A number of improvements to device list handling

  • Key updates are now sent when handling device display name changes

  • Deleted devices are now propagated correctly over federation

Spec compliance is improving:

  • Client-Server APIs: 54%, up from 51% last week

  • Server-Server APIs: 70%, up from 54% last week

As always, feel free to join us in #dendrite:matrix.org for the latest!

I'm enjoying the close rivalry and progress happening in Dendrite and Conduit right now!

Sytest

Neil Alexander reported:

Sytest has now been updated to allow skipping tests for endpoints that have been deprecated in the spec. This may be useful if you are writing a homeserver and have no plans to implement deprecated endpoints, e.g. /initialSync or /events.

Use the command line parameter --exclude-deprecated when starting Sytest to skip these tests!

Synapse Deployment ๐Ÿ“ฅ๏ธ

YunoHost

Pierre reported:

YunoHost is an operating system aiming for the simplest administration of a server, and therefore democratize self-hosting.

Synapse integration had been updated to 1.18.0

Element Web integration had been updated to 1.7.3

Kubernetes

Ananace reported:

Just pushed some WIP (v0.1) charts for both Synapse and the matrix-media-repo project, written with Redis, workers/sharding, PVC constraints, and other large deployment thoughts in mind.

Note that these charts - the Synapse one in particular - basically require you to have a fully featured cluster, with a regex-capable ingress, automated cert manager, and RBAC. They do not require you to have a ReadWriteMany capable storage class though, even when using workers.

and then:

To expand on my earlier TWIM, the charts for Synapse, media-repo, and now element-web are all being used in production now so they are also respectively receiving their 1.0's

Dept of Clients ๐Ÿ“ฑ

Nheko

Nheko is a desktop client using Qt, Boost.Asio and C++17. It supports E2EE (with the notable exception being device verification for now) and intends to be full featured and nice to look at

Nico (@deepbluev7:neko.dev) said:

So, we've been silent for a bit, but that doesn't mean we haven't been busy, so I have a little bit of a bigger announcement to make today:

Trilene implemented voice call support in Nheko! We just merged this and you can try it out now!

Some caveats apply at the moment, but will be resolved in the near future:

  • Currently you will need to have a patched version of GStreamer. The current releases of GStreamer have a bug when your turnserver uses a password, that contains a ':'. Since this is the default for coturn, I'm guessing this affects everyone.

  • You will need to build Nheko yourself. Currently we do not have GStreamer available in our CI pipeline, so we disabled support for voice calls in those builds (apart from the flatpak build, but that also needs some further validation and a new GStreamer release). We will release proper builds with VOIP support once GStreamer is actually released and available with the fixes we need.

  • There are still some other issues, when relying on a turnserver to connect a call. We will fix them one at a time.

Big shoutout to trilene for implementing all of this! I can finally call people from Nheko, which is super awesome!

This was the first of the bigger features, that have been cooking for a while, in the near future we should also finish the new event store, which reduced memory usage and provides some kind of offline support, and Chethan will probably finish the first iteration of cross-signing soon too. After that we'll focus on the smaller features again. ;-)

BIG update! Looking forward to trying out voice calls. โ˜Ž๏ธ Maybe we'll be calling Nico for Matrix Live soon..?

Element-Android

benoit said:

We are still fixing issues following the Element release. We are also working to add Jitsi conference call support.

We have exported a first beta version of the SDK from Element Android. It is available here: https://github.com/matrix-org/matrix-android-sdk2 and can be integrated in any Android app as a regular gradle dependency. We will update the SDK after each release of Element Android.

SchildiChat for Android

SpiritCroc said:

SchildiChat version 1.0.4-sc.12 should be up in the Play Store soon.

It includes following changes since the last TWIM:

  • The single-list overview screen is now optional. If you prefer the tabbed layout for separating direct messages and rooms, as known from Element for Android, but still want SchildiChat's message bubbles, you can get that combination now too!

  • Push notifications have been enabled for the Play Store variant

  • Some theme fixes for old Android versions

Hydrogen

Bruno told us:

Some regular readers might remember, in the past I've put a few entries here about a side-project called Brawl. Two weeks ago, we took Brawl and started building a new client on top of it code-named Hydrogen.

As the name implies, Hydrogen tries to be the lightest Element. It is written entirely in vanilla javascript (no React, no Webpack) for complete control, structured as an MVVM app, leveraging the raw performance of indexeddb. On huge accounts where Element-web uses up to 1GB of heap memory, Hydrogen sips away with a mere 15mb. It is very early days though, and Hydrogen has very little features: you can receive and send unencrypted messages and that's it.

Hydrogen also aims to support a wider range of browsers, from IE11 (particularly for orgs with locked-down machines) all the way to a fully featured PWA that works well on mobile. We should also be able to easily add progressive loading, which proved hard in the past.

Another goal is to make it easy to embed parts of the app (like the room view) into another app or website. It could also be really nice to have a place to play and experiment with new tech for element proper - much as Dendrite has influenced Synapse.

As mentioned, it's early days, and lots of things are missing or broken, so please don't file any issues yet. Feel free to play around with it at https://hydrogen.element.io/ though!

Hydrogen

Find the repo here: https://github.com/vector-im/hydrogen-web/.

Element-iOS

ismailgulek offered:

This week, we've completed some of the tasks from the sprint: https://github.com/vector-im/element-ios/milestone/38.

As a highlight, we've released a new TF with PushKit & CallKit back.

Dept of SDKs and Frameworks ๐Ÿงฐ

Ruma

Ruma is a Rust project to create a comprehensive set of APIs for Matrix. Previously there was a Ruma homeserver project.

iinuwa announced:

Lots of exciting things happened in Ruma this week:

  • We have officially implemented over half (18/31) of the Federation API endpoints!

Special thanks to @agraven and @q-b!

  • We've added the only new endpoint from r0.6.1 of the C2S spec.

  • We have begun work on adding support for borrowed types for requests. This should reduce the memory allocations required for clients to send requests to

a server.

  • Exported some macros to make creating custom endpoints and events that

much easier.

New Contributors

This week, we have gotten help from a few new contributors:

Thanks for your help!

If you're interested in contributing, join the party on GitHub or

#ruma:matrix.org!

Great to see new contributors here.

Dept of Ops ๐Ÿ› 

Support for Ansible collections from Famedly

JCG told us:

There's news from ansible land! Ansible recently introduced a new packaging format, the "collection", and we've now started moving our ansible content into collections. This means the matrix modules I twim'ed a few months back are now easier to install than ever before, and the synapse/element roles are included in there as well (thanks to madonius for the contributions there). The roles have been regularly updated for a while now, and the element role isn't even called riot anymore! You can get the collection on Ansible Galaxy, with the source being available over on GitLab. In case of any questions, feel free to hop over into #ansible:famedly.de

If Ansible were a film franchise "Ansible: The Collection" would be the long awaited boxset.

Dept of Bots ๐Ÿค–

Cody

carl said:

cody - the REPL for your matrix room - received support for unit conversions this week. This is done by implementing GNU units as a language.

Chat with cody: @cody:bordum.dk

Join our cody room: #cody:bordum.dk Read the source: https://gitlab.com/carlbordum/matrix-cody/

2020-08-14-cody.png

Seems to work well!

Opsdroid

Cadair reported:

opsdroid is getting close to a release with the matrix connector rewritten to use the matrix-nio library. If you are feeling brave and want to help us iron out any bugs before the release, please install the master branch and test it out for your matrix bots. Please report any issues on the GitHub issue tracker or come talk in #opsdroid-developers:matrix.org. Hopefully, a release with this and lots of other goodies will be coming in a couple of weeks.

Dept of Interesting Projects ๐Ÿ›ฐ๏ธ

Privee

terry_hello said:

Hi All,

Iโ€™ve created a compact and portable home server based on Matrix protocol, itโ€™s a piece of hardware which is easy to use and set up. Iโ€™m working on a new client APP similar to other typical messenger GUI, but this server we named it โ€˜Priveeโ€™ supports any messenger developed with Matrix protocol. Iโ€™ve launched a campaign on Kickstarter this week, please come and support us! Thank you! https://www.kickstarter.com/projects/privee/privee?ref=beibnw

Privee is an interesting project alright! The project creators are based in Hong Kong, and are working from a desire to have more control over their communications. The plan is to run homeservers on a small computer physically located with the user, similar to plans outlined by NovaChat.

This is an early-stage project (hence starting on KickStarter.) While exciting and ambitious, I encourage everyone to do their own research! Learn more and chat with terry_hello (who has done a good job handling questions already!) in #Privee:matrix.org.

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. Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1helderferreira.io470
2maescool.be486.5
3matrix.vgorcum.com570.5
4mchus.pro730
5envs.net770
6maunium.net983
7matrix.org1261
8acmelabs.space1282.5
9chatserver.ca1387
10productionservers.net1433.5

That's all I know ๐Ÿ

See you next week, and be sure to stop by #twim:matrix.org with your updates!

This Week in Matrix 2020-08-07

07.08.2020 00:00 โ€” This Week in Matrix โ€” Ben Parsons

Matrix Live ๐ŸŽ™

Dept of Spec ๐Ÿ“œ

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.

MSC Status

Merged MSCs:

  • No MSCs were merged this week.

MSCs in Final Comment Period:

  • No MSCs are in FCP.

New MSCs:

Dept of GSoC ๐ŸŽ“๏ธ

go-neb

nikofil reported:

  • Handle SAS verification by adding an endpoint where the decimal SAS code generated by another device can be sent. If this code matches with go-neb's generated code, the verification succeeds and the device is marked as trusted.

  • Add a cryptotest service which can be used for other clients to test their functionalities related to e2ee. This currently includes a challenge / response, key forwarding functions (key request / key forward) and SAS verification. SSSS and cross-signing are planned for the future. (PR is under review)

Dept of P2P ๐Ÿ‘ฅ

iOS P2P Demo

Dendrite is a next-generation homeserver written in Go

Neil Alexander said:

The Element P2P demo on iOS has seen a number of updates in the last week - now at build 31 - which contains a number of fixes:

  • QUIC session setup is now far more reliable

  • QUIC sessions are now reset when the node's network coordinates change

  • The federation sender now wakes up properly on incoming QUIC sessions

  • Network coordinates are now cached for remote federated nodes, reducing the number of DHT searches and speeding up resuming federation

  • HTTP pools are disabled, which reduces head-of-line blocking problems on stalled sessions

  • A number of timeouts have been lowered

  • Dendrite has been updated to the latest version

If you have an iPhone or iPad and want to play with the demo, grab the public TestFlight!

Dept of Servers ๐Ÿข

matrix-media-repo v1.2.0

matrix-media-repo is a highly customizable multi-domain media repository for Matrix

TravisR told us:

v1.2.0 is out now, with a bunch of bug fixes and some added features:

  • Thumbnail support for apng and webp images (thanks Sorunome!)

  • Experimental (but pretty stable) support for Redis as a cache - instructions here

  • Optional oEmbed support for things like previewing tweets - turn it on here

  • Dynamic thumbnail support

  • Per-user quotas

v1.2.0 is also much faster at file uploads, however some areas of matrix-media-repo can still be improved - general performance work is planned for the next release.

Learn more about matrix-media-repo.

Dendrite / gomatrixserverlib

Dendrite is a next-generation homeserver written in Go

Neil Alexander announced:

We are happy to announce the beta milestone for our first versioned release of Dendrite, which we anticipate to land in the next few weeks. Once these issues are cleared, we'll have made the big breaking changes that we want to make and will have a migration mechanism in place for database schema upgrades.

This will make life significantly easier for anyone who wants to start experimenting with and running their own Dendrite homeservers without unexpected breakages. More updates to follow soon - join us in #dendrite:matrix.org for the latest!

This week, Dendrite's end-to-end encryption support has also been mostly rounded off with the exception of a few minor bugs and edge-cases.

Changes this week include:

  • TLS certificate verification is now enabled by default

  • A new federation_disable_tls_validation config option has been added to override the above

  • Added support for processing inbound device lists from federation

  • Local device list changes are now sent outbound over federation

  • One-time key counts are now sent in /sync

  • Direct server signing key fetches are now limited to 15 seconds

  • State events that fail signature checks on federated room joins are now properly ignored

  • A number of SQLite database lock bugs have been fixed using TransactionWriter

  • A bug when finding joined hosts in the federation sender in SQLite mode has been fixed

  • Logging levels have been adjusted in a number of areas

Spec compliance:

  • Client-Server APIs: 51%, same as last week

  • Server-Server APIs: 54%, up from 53% last week

Asked whether this progress means that matrix.org would be running on Dendrite next year, Neil said he was certain that it would definitely be ready:

Anything is possible

Conduit

Conduit is a Matrix homeserver written in Rust https://conduit.rs

timo reported:

  • Improve long polling when user is invited (thanks @gnieto)

  • Documentation and code cleanup

  • Getting initial server_server code back into shape

Thanks to everyone who supports me on Liberapay or Bitcoin!

Oh and btw look at Matrix Live this week!

Synapse

Patrick offered:

This week in Synapse land we continued with our performance push making further progress on the async/await-athon. We will move into the storage layer this coming week which will leave the caching layer and a few other bits outstanding. Separate work continued to get the event persister into a shardable state. The first step being to replace the event stream token with its own type and then threading that through the code base.

We have also continued to improve on our push capabilities and released a new version of Sygnal (0.8.2) with support for pushing to iOS devices via Firebase.

We are also very close to getting a workable version of the new push rules. The idea is to test it out in the wild before getting it enshrined in the spec.

Next week will see a continued focus on sharding and async/awaiting, more notifications work, logging improvements, and a host of bug fixes!

Dept of Bridges ๐ŸŒ‰

maubot rss plugin

Tulir reported:

I released v0.2.0 of the maubot RSS plugin. The most recent addition is support for JSON feeds, stolen from inspired by FantasyCookie17's jsonfeed-bot.

Other changes since v0.1.0:

  • Per-feed toggle to send posts as m.text instead of m.notice
  • Automatically moving subscriptions across room upgrades
  • Some fixes for handling weird feeds

maubot/rss is a maubot plugin that posts feed updates to Matrix rooms. It supports RSS/Atom/JSON feeds, customizing message templates per-feed/room, and more.

mautrix bridges

Tulir reported:

All my bridges now have options for automatic e2ee key sharing in portal rooms. Currently they don't have verification support (other than manually marking as verified in the database), so enabling key sharing isn't entirely secure yet. I'll probably invent some sort of web verification interface after nikofil adds cross-signing to mautrix-go.

This also means mautrix-python now supports sending and responding to key requests. I'll port the interactive verification and future cross-signing code from mautrix-go to mautrix-python at some point too.

Dept of Clients ๐Ÿ“ฑ

Fractal

Alexandre Franke offered:

4.4.0 is out as promised last week! Get it off Flathub now.

After we announced our intention to release, we discovered a regression that prevented joining new rooms because there was a mixup between room aliases and room id during a switch from internal structures to ruma-identifiers. Luckily we managed to fix it in time and make the release as intended.

Full changelog since 4.2.2

New features

  • Videos now have a preview directly in history

  • New videos player: click on a preview to open it

  • Improved audio file support, with a nicer presentation and seeking

  • Redacted messages are removed from history

  • Edited messages are replaced with their new content and show a small icon

  • Translations have been updated

  • Spellcheck language is saved per room

  • New swipe-back gesture to go back from room to room list in narrow view

  • New swipe left and right gesture to navigate through media in media view

  • SOCKS proxy are now also supported

Bugfixes

  • Thumbnail for pasted images have been fixed

  • File type detection for uploads is more reliable

  • Typing notifications are now only sent when text is actually typed in the message input

Under the hood

  • Code refactor is still going

  • Some improvements to logging, including access token removal for privacy

Element Android

valere told us:

Sorry we missed last week TWIM!

  • Element Android 1.0.4 ๐Ÿš€ has been released to the store, it contains several bug fixes, and is adding back some moderators functionality (see list of banned users for a room + actions)

The team has been mainly working on stabilisation + refactoring of the current code base.

We are also trying to give more visibility on what is coming next:

  • Pin code protection ๐Ÿ”“ (merged on develop)

  • Improvement of big media upload

  • Cancelling send, retries, better upload progress...

  • Call fixes and improvement

  • Improve fdroid polling for notification

The team is partially off, expect some delays in handling of issues and PR reviews

SchildiChat Android

SpiritCroc reported:

SchildiChat is a new fork of Element for Android (previously RiotX), which features some UI changes, to make it more comfortable to use for people who are used to other common instant messengers.

The most important changes are the following:

  • The overview screen lists all chats in one list instead of the tabbed layout in Element

  • Message bubbles (optional)

  • Theme choice based on the system-wide dark/light theme on recent Android versions

It is now available on Google Play, it might appear on F-Droid too in the future.

#schildichat-android:matrix.org is the place to find out more.

New AppImage for the Element Desktop Matrix Client

srevinsaju told us:

As per this issue comment, I was asked to inform this channel of the new AppImage for the Element Desktop Matrix Client. ๐ŸŽ‰. Interested users may get them on appimage.github.io or on my releases page, offering Continuous builds (refreshed every day) for stable and beta builds ๐Ÿ˜ƒ

IndieChat announced

indiechat announced:

Hello, World! [IndieChat], a new Android matrix client is in Play Store: https://play.google.com/store/apps/details?id=chat.indie.cam

This is forked from FluffyChat:

I have changed the archive feature. Added a splash screen. Further simplified settings. Login times work faster compared to FC. I am connecting it to my Jitsi instance. which operates p2p and is completely analytics free. Message notifications are analytics free. It will eventually be an extension to a videocall app developed by myself. It adds variety to the ecosystem. It strictly follows license rules, credits the developers and links to their wonderful work. And it is a great thing to do in my spare time โ˜บ๏ธ

Element-iOS

Manu said:

This week, we started a new sprint to finalise remaining rebranding and iOS13 SDK issues. Note that have a plan to make CallKit and PushKit back!

In parallel, we have finished to setup the CI for the 3 iOS projects.

Dept of Encryption ๐Ÿ”

Device dehydration

uhoreg told us:

I missed out on demo day last week because my demo wasn't ready yet. But I recorded a video, so here is what you would have seen if I had managed to finish on time: https://scitech.video/videos/watch/4aad91c3-30bb-479f-8437-a517354594db

Dept of SDKs and Frameworks ๐Ÿงฐ

matrixbz

patrick announced:

simple matrix bots with matrix-nio

Hey all! I built yet another bot library. matrixbz was built with the intention of making it easy to draft matrix bots. Check out the github - I've added some examples where you can build a bot in ~10 lines of python code. matrixbz features:

  • Auth - you can specify user(s) who are authorized to call commands. bot only accepts invites from those users.

  • Cache - you can cache results for particular command invocations.

Check out the package.

Ruma

iinuwa reported:

We have released version 0.0.1 of the ruma crate! Thanks to all of our contributors!

Besides that and continuing to refine ruma-events, here are some other highlights over the past couple weeks:

  • Implemented a few more endpoints implemented on ruma-federation-api

  • Added helper macros for creating identifier types

Dept of Bots ๐Ÿค–

Hemppa

Cos told us:

Hemppa the bot is a general use bot that has lot of modules for various uses and super easy API to create more. Hemppa received support for Mastodon. Now you can login to your Mastodon account and send toots via Matrix. Next major feature would be to subscribe to hashtags and users and get notifications to Matrix rooms. https://github.com/vranki/hemppa#mastodon

HOPEless, the HOPE conference bot

valka said:

The Hackers on Planet Earth conference went almost entirely self-hosted this year due to not being able to hold an in-person event, and used Matrix to go virtual! hopeless was the robot-heart of the conference, providing community+room ACLs for attendees. The bot also has a bunch of other features including:

  • configured admins sending notices to rooms

  • ability to manually and programmatically schedule announcements for scheduled events happening, like workshops or talks

  • the ability for users to re-join rooms and generate invites for themselves as necessary

  • admin commands for inviting attendees and presenters without tickets

  • an attempt to be friendly and solve people's common problems without a real person having to assist (surprisingly effective!)

Many thanks to the nio-template for existing, otherwise this wouldn't have been possible!

anoa (nio-template) creator responded:

Wonderful! I plan to give it some more love soon, including some docker magic to make it easier to run.

If you ever have any feedback about improving it, feel free to post it in #nio-template:amorgan.xyz :)

matrix-diskstation-bot

KB1RD said:

This is just a stupid simple bot based on T r a v i s R's matrix-bot-sdk-bot-template that forwards alerts from a Synology DiskStation NAS to Matrix room(s).

It's on GitHub and Docker Hub

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. Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1fairydust.space426
2privacytools.io438
3saferutar.com487
4maunium.net534
5heitkoetter.net570
6chatcloud.net640
7encom.eu.org658.5
8envs.net697
9matrix.vgorcum.com847
10neko.dev879

That's all I know ๐Ÿ

See you next week, and be sure to stop by #twim:matrix.org with your updates!

This Week in Matrix 2020-07-31

31.07.2020 20:51 โ€” This Week in Matrix โ€” Ben Parsons
Last update: 31.07.2020 20:24

Matrix Live ๐ŸŽ™

Dept of Status of Matrix ๐ŸŒก๏ธ

Matrix is being used in the "world's biggest messaging and collaboration" deployment.

[Matrix will] be rolled out by the German education system to provide collaboration tools for half a million seats in the states of Schleswig-Holstein and Hamburg

Casual 500,000 user deployment, very nice!

Dept of Spec ๐Ÿ“œ

anoa announced:

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.

MSC Status

Finished FCP:

MSCs in Final Comment Period:

  • No MSCs are in FCP.

New MSCs:

Spec Core Team

In terms of Spec Core Team MSC focus for this week, we'll be continuing on with MSC2674 (aggregations pt1: relationships) and adding MSC1544 (QR code verification) on top.

2020-07-31-3hFLP-stacked_area_chart.png

Dept of GSoC ๐ŸŽ“๏ธ

karlik

karlik announced:

for matrix-ircd

  • Merged update for total move to async / await into development branch, (hopefully) soon to be merged to master

  • Made single-threaded project thread-safe for easily scaling up to potentially many threads

  • Added additional logging for tls and non-tls connections for more clear debugging

Dept of Servers ๐Ÿข

E2E Dendrite

Dendrite is a next-generation homeserver written in Go

kegan reported:

E2E Dendrite work is progressing, and we're making a lot of breaking changes ahead of our first stable release which you can expect in the coming weeks.

As for the changes this week:

  • Add a bare bones user directory. This is mainly to benefit the iOS Yggdrasil demo.

  • The dendrite-config.yaml configuration format has been overhauled. It's still in review but expect big changes here!

  • Fixed a bug with SQLite when handling large rooms (thanks @HenrikSolver!)

  • Device lists now work locally, with federation support to come.

Spec compliance is up from last week:

  • Client-Server APIs: 51%, up from 49%.
  • Federation APIs: remains at 53%.

Conduit

Conduit is a Matrix homeserver written in Rust https://conduit.rs

timo announced:

Welcome back! This week was very productive:

  • Ignore users (thanks @devinr528)

  • Long polling (faster and more efficient /sync)

  • Fix and improve presence

  • Room tagging (thanks @gnieto)

  • /publicRooms pagination

  • Refactor endpoints into modules

  • Export endpoints as a library (useful for p2p!)

  • Config options to set the maximum upload size or disable encryption

  • and more!

Thanks to everyone who supports me on Liberapay or Bitcoin!

Synapse

Neil offered:

This week we shipped 1.18.0 which contained support for our worker sharding performance projects that youโ€™ve been hearing about recently.

We also shipped a security and feature release of Sygnal (actually two eachโ€ฆ). The main new feature being the ability to run behind an HTTP proxy which is useful in environments that mandate that all traffic go through a proxy.

Aside from that week we continued our async/await-athon and Patrick provided a visual update

2020-07-31-m2KRg-image.png

Weโ€™ve been documenting worker support and diving into sharding the event persisters. This is not a small job since it means every other part of the code base that assumes an integer stream id will need to be updated to be aware of multiple stream ids from multiple persisters.

Over in feature land weโ€™ve been working on the notifications project and most of the backend support is done. The project will mean more intuitive defaults as well as a much better client UX in configuring notification settings.

Finally special thanks to Aaron Raimist for a bumper docs PR

Synapse Deployment ๐Ÿ“ฅ๏ธ

Kubernetes

Ananace offered:

Just pushed the 1.18.0 K8s-optimized Synapse images, now only doing the debian-based version as like upstream - though still including jemalloc. So latest/v1.18.0 and *-debian will be the same in this version and going forwards. Additionally, the *-debian tags will only remain for a release or two more before disappearing, as they're now superfluous.

Dept of Bridges ๐ŸŒ‰

mautrix-telegram

Tulir offered:

I finally added automatic backfilling options to mautrix-telegram. Like my other bridges, it can backfill old messages when creating portals and missed messages when restarting, and it can disable notifications in the room while backfilling.

I also added bridging for your own read receipts, so if you read a message with another Telegram client, the bridge will mark it as read on your Matrix account with double puppeting.

Dept of Clients ๐Ÿ“ฑ

NovaChat

eric reported:

NovaChat is a new Matrix-based desktop client that aggregates all your chat networks into one app

July 31 Updates:

  • New room list design, featuring collapsible 'clusters' (see gif)

  • Enabled encrypted room search (thanks #seshat:matrix.org!)

  • Added [mautrix-twitter]( https://github.com/tulir/mautrix-twitter)

  • Worked around FB Messenger bridge 'forced-logout issue' by routing traffic through proxy on Raspberry Pi at each users home

In the works...

  • Create new clusters of chats in room list, using tags

  • iMessage bridge, using jailbroken iDevice

  • Android Messages bridge

Adding new users weekly. Sign up for the NovaChat beta. Or send me a DM @eric:nova.chat

2020-07-31-yJ-jJ-NovaChat-Newroomlist.gif

gomuks

gomuks is a terminal based Matrix client written in Go. Source on GitHub

Tulir told us:

gomuks can now do interactive verification for e2ee. Most of it is thanks to nikofil's SAS verification PR to mautrix-go, I just made a UI for using it. Currently gomuks can only send verification requests, but I'll add some interface for accepting incoming requests soon.

Related to verification, there are some new commands for verifying/unverifying/blacklisting devices and viewing device lists. There's also a toggle to disable sending messages to unverified devices.

This is super exciting, raises gomuks to the level of a daily driver IMO.

Fractal

Alexandre Franke announced:

We will release version 4.4 next Friday. Now is a good time to test the nightly version and check if it doesnโ€™t break anything with your homeserver compared to 4.2.
The changelog has been sparsely given in previous TWIMs, but you could have a look at https://gitlab.gnome.org/GNOME/fractal/-/commit/463e6bc9988e2d8fffbfc38058f8d0b12cd074d7

Element-iOS, previously Riot-iOS

Manu announced:

We released 1.0.2 this week to the AppStore and on TestFlight. It's mainly a bug fix release after the Element rebranding.

Dept of SDKs and Frameworks ๐Ÿงฐ

mautrix-go

nikofil offered:

SAS verification support has been merged! Support for it should also be landing in go-neb soon, both for verifying with the bot's device and for testing with go-neb's client testing service. Next up, looking at SSSS and eventually cross-verification support.

Dept of Ops ๐Ÿ› 

YunoHost

Pierre told us:

YunoHost is an operating system aiming for the simplest administration of a server, and therefore democratize self-hosting.

Synapse integration had been updated to 1.15.2 (1.17.0 available in branch testing)

Riot Web integration had been updated to 1.6.8 (Element 1.7.1 available in branch element)

Final Thoughts ๐Ÿ’ญ

Tobi said:

We, some German Synapse admins, have created a survey about the usage of Matrix-Synapse for private statistic purpose (results will be published alike). As suggested in #synapse:matrix.org, this could also be a topic for "TWIM".

Find the survey at http://go.kabi.tk/MatrixQuestionnaire2020.

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. Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1kleinhirn.net366
2fairydust.space383
3tchncs.de394.5
4mjdsystems.ca506
5matrix.org587
6nobelium.no753.5
7pixie.town761
8matrix.linux.pizza1111
9uraziel.de1230.5
10yyyyyyy.ml1314

That's all I know ๐Ÿ

See you next week, and be sure to stop by #twim:matrix.org with your updates!

Synapse 1.18.0 released

30.07.2020 18:34 โ€” Releases โ€” Neil Johnson

Synapse 1.18.0 has landed.

The most important thing to know about 1.18.0 is that it contains support for sharding multiple workers. Specifically this means being able to run multiple federation senders, multiple client readers to handle registration and multiple push workers. This will be important for anyone running a large scale install of Synapse. You can read more about how to benefit from these changes in docs/workers.md. In the same spirit we also moved typing notifications from the main process.

Aside from that, we have new admin API support to list the users in a room, support for oEmbed for media previews (you can unfurl tweets again!) and a general slew of federation bug fixes.

Get the new releases from any of the usual sources mentioned at https://github.com/matrix-org/synapse/blob/master/INSTALL.md. 1.18.0 is on github here.

Changelog for 1.18.0 follows:

Synapse 1.18.0 (2020-07-30)

Improved Documentation

  • Update worker docs with latest enhancements. (#7969)

Synapse 1.18.0rc2 (2020-07-28)

Bugfixes

  • Fix an AssertionError exception introduced in v1.18.0rc1. (#7876)
  • Fix experimental support for moving typing off master when worker is restarted, which is broken in v1.18.0rc1. (#7967)

Internal Changes

  • Further optimise queueing of inbound replication commands. (#7876)

Synapse 1.18.0rc1 (2020-07-27)

Features

  • Include room states on invite events that are sent to application services. Contributed by @Sorunome. (#6455)
  • Add delete room admin endpoint (POST /_synapse/admin/v1/rooms/<room_id>/delete). Contributed by @dklimpel. (#7613, #7953)
  • Add experimental support for running multiple federation sender processes. (#7798)
  • Add the option to validate the iss and aud claims for JWT logins. (#7827)
  • Add support for handling registration requests across multiple client reader workers. (#7830)
  • Add an admin API to list the users in a room. Contributed by Awesome Technologies Innovationslabor GmbH. (#7842)
  • Allow email subjects to be customised through Synapse's configuration. (#7846)
  • Add the ability to re-activate an account from the admin API. (#7847, #7908)
  • Add experimental support for running multiple pusher workers. (#7855)
  • Add experimental support for moving typing off master. (#7869, #7959)
  • Report CPU metrics to prometheus for time spent processing replication commands. (#7879)
  • Support oEmbed for media previews. (#7920)
  • Abort federation requests where the client disconnects before the ratelimiter expires. (#7930)
  • Cache responses to /_matrix/federation/v1/state_ids to reduce duplicated work. (#7931)

Bugfixes

  • Fix detection of out of sync remote device lists when receiving events from remote users. (#7815)
  • Fix bug where Synapse fails to process an incoming event over federation if the server is missing too much of the event's auth chain. (#7817)
  • Fix a bug causing Synapse to misinterpret the value off for encryption_enabled_by_default_for_room_type in its configuration file(s) if that value isn't surrounded by quotes. This bug was introduced in v1.16.0. (#7822)
  • Fix bug where we did not always pass in app_name or server_name to email templates, including e.g. for registration emails. (#7829)
  • Errors which occur while using the non-standard JWT login now return the proper error: 403 Forbidden with an error code of M_FORBIDDEN. (#7844)
  • Fix "AttributeError: 'str' object has no attribute 'get'" error message when applying per-room message retention policies. The bug was introduced in Synapse 1.7.0. (#7850)
  • Fix a bug introduced in Synapse 1.10.0 which could cause a "no create event in auth events" error during room creation. (#7854)
  • Fix a bug which allowed empty rooms to be rejoined over federation. (#7859)
  • Fix 'Unable to find a suitable guest user ID' error when using multiple client_reader workers. (#7866)
  • Fix a long standing bug where the tracing of async functions with opentracing was broken. (#7872, #7961)
  • Fix "TypeError in synapse.notifier" exceptions. (#7880)
  • Fix deprecation warning due to invalid escape sequences. (#7895)

Updates to the Docker image

  • Base docker image on Debian Buster rather than Alpine Linux. Contributed by @maquis196. (#7839)

Improved Documentation

  • Provide instructions on using register_new_matrix_user via docker. (#7885)
  • Change the sample config postgres user section to use synapse_user instead of synapse to align with the documentation. (#7889)
  • Reorder database paragraphs to promote postgres over sqlite. (#7933)
  • Update the dates of ACME v1's end of life in ACME.md. (#7934)

Deprecations and Removals

  • Remove unused synapse_replication_tcp_resource_invalidate_cache prometheus metric. (#7878)
  • Remove Ubuntu Eoan from the list of .deb packages that we build as it is now end-of-life. Contributed by @gary-kim. (#7888)

Internal Changes

  • Switch parts of the codebase from simplejson to the standard library json. (#7802)
  • Add type hints to the http server code and remove an unused parameter. (#7813)
  • Add type hints to synapse.api.errors module. (#7820)
  • Ensure that calls to json.dumps are compatible with the standard library json. (#7836)
  • Remove redundant retry_on_integrity_error wrapper for event persistence code. (#7848)
  • Consistently use db_to_json to convert from database values to JSON objects. (#7849)
  • Convert various parts of the codebase to async/await. (#7851, #7860, #7868, #7871, #7873, #7874, #7884, #7912, #7935, #7939, #7942, #7944)
  • Add support for handling registration requests across multiple client reader workers. (#7853)
  • Small performance improvement in typing processing. (#7856)
  • The default value of filter_timeline_limit was changed from -1 (no limit) to 100. (#7858)
  • Optimise queueing of inbound replication commands. (#7861)
  • Add some type annotations to HomeServer and BaseHandler. (#7870)
  • Clean up PreserveLoggingContext. (#7877)
  • Change "unknown room version" logging from 'error' to 'warning'. (#7881)
  • Stop using device_max_stream_id table and just use device_inbox.stream_id. (#7882)
  • Return an empty body for OPTIONS requests. (#7886)
  • Fix typo in generated config file. Contributed by @ThiefMaster. (#7890)
  • Import ABC from collections.abc for Python 3.10 compatibility. (#7892)
  • Remove unused functions time_function, trace_function, get_previous_frames and get_previous_frame from synapse.logging.utils module. (#7897)
  • Lint the contrib/ directory in CI and linting scripts, add synctl to the linting script for consistency with CI. (#7914)
  • Use Element CSS and logo in notification emails when app name is Element. (#7919)
  • Optimisation to /sync handling: skip serializing the response if the client has already disconnected. (#7927)
  • When a client disconnects, don't log it as 'Error processing request'. (#7928)
  • Add debugging to /sync response generation (disabled by default). (#7929)
  • Update comments that refer to Deferreds for async functions. (#7945)
  • Simplify error handling in federation handler. (#7950)

This Week in Matrix 2020-07-24

24.07.2020 00:00 โ€” This Week in Matrix โ€” Ben Parsons

Matrix Live ๐ŸŽ™

Dept of Status of Matrix ๐ŸŒก๏ธ

New guide for client e2ee implementation, including cross-signing

Thanks and congratulations to Sorunome this week for releasing a new guide: Implementing more advanced e2ee features, such as cross-signing. This is a hugely detailed guide detailing the necessary steps to enable Cross-Signing and verification. Thanks as well to uhoreg and poljar for their work in reviewing the text!

New Masters Thesis written on Matrix

Julian Sparber announced:

I wrote a master thesis that tries to create e2e encryption based on Ethereum on top of Matrix. It may not solve all problems but it's an interesting experiment

https://blogs.gnome.org/jsparber/2020/07/20/i-finished-my-masters-degree/

I didn't get to look at this yet but it's exciting!

Dept of Spec ๐Ÿ“œ

kitsune (guess who's back!?) said:

I have put the long-awaited MSC2312 out of WIP - this is about matrix: URIs in case you haven't heard - and it's already in active discussion at #uri-scheme-proposal:matrix.org! Join the fun to make it the most awesome! The upcoming Quotient 0.6 has an implementation of those so adventurous Quaternion users can start experimenting right away.

Spec

anoa reported:

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.

MSC Status

Abandoned MSCs:

MSCs in Final Comment Period:

New MSCs:

Spec Core Team

In terms of Spec Core Team MSC focus, we've reduced last week's list of 5 MSCs down to one, MSC2674 (aggregations part 1: relationships). Next week, we're going to focus entirely on that MSC to make some headway on finally getting aggregations into the spec.

2020-07-24-oRVoi-stacked_area_chart.png

Dept of GSoC ๐ŸŽ“๏ธ

HTML embeddable Matrix client

arnav-t announced:

For the GSoC project HTML embeddable Matrix client this week:

  • Added status bar for connection errors

  • Added support for displaying typing notifications

Dept of P2P ๐Ÿ‘ฅ

P2P / Dendrite

Dendrite is a next-generation homeserver written in Go

kegan announced:

The P2P Yggdrasil iOS demo has seen some improvements:

  • Federation sender blacklists are now persisted which is important as the iOS app will be frequently terminated.

  • SQLite3 now uses TransactionWriters in more places to reduce the amount of 'database is locked' issues.

  • Federation sender has had much of its storage code refactored and de-duplicated.

In addition, there has been much work getting Dendrite to support E2E rooms, which it now mostly does.

You can create and join E2E rooms and have a conversation locally, though there's issues with it over federation. In addition, Dendrite currently lacks device lists so adding new devices may result in unable-to-decrypt errors:

  • Send-to-device events now work over federation.

  • Device key uploads and querying now work both locally and over federation.

  • One-time key uploads and claiming now work both locally and over federation.

Spec compliance is up from last week:

  • Client Server APIs: 49%, up from 48%.
  • Federation APIs: 53%, up from 51%.

Doesn't it feel like we'll be using Dendrite in the wild really soon now?

Dept of Servers ๐Ÿข

Conduit

Conduit is a Matrix homeserver written in Rust https://conduit.rs

timo offered:

Another quiet week. Next week should be more exciting again.

  • Moved to stable rust (rocket now compiles on stable!)

  • Implement /joined_rooms (thanks @aura)

  • Add max_request_size config option to set the maximum size for file uploads and other requests (thanks @CapsizeGlimmer)

Synapse

Neil said:

This week we continued on our async/await athon, you can track progress here, expect steady progress over the coming weeks.

We dusted off the notifications project working with our pals in the Element client teams to ensure that the push rule defaults make sense. On the flip side we made further improvements to Sygnal and will merge the ability to have it sit behind a proxy rsn.

We are also trying to figure out how media retention limits should work in Synapse.

Up next is to continue our performance push. We need to spend time between pulling things off the master process as well sharding the event persister. We will continue with notifications and maybe finally squash https://github.com/matrix-org/synapse/issues/2528

Dept of Bridges ๐ŸŒ‰

Introducing matrix-figma

Half-Shot reported:

Hello people. It's been a while since I've talked about a new bridge...or actually any bridges. Fear not, now you can hear both! Today I'm announcing the birth of another project matrix-figma. Figma is an online collaborative design tool. It was created to scratch an itch with the Element design team, who wanted to see comments appear in their Matrix rooms in realtime when someone commented on a Figma file.

The bridge works by first joining it to an "admin room", which functions as a permitted user list. The bot can then be invited to any other room so long as the invitee is in that admin room, and can then ask the bot to start directing comment notifications into the room.

The room uses room state to hold configuration, so you can host the bot as a docker container anywhere without the need for any support files!

I can announce that the bridge is now functional for simple use cases such as these, with more interesting functionality in the future.

Please check out https://github.com/Half-Shot/matrix-figma to see if the bridge is right for you :)

slack-matrix-migration

Sven offered:

I opened a PR for https://github.com/Awesome-Technologies/slack-matrix-migration, which makes it compatible with recent Synapse versions and adds new config options allowing to effectively import a Slack workspace history to an existing homeserver via federation.

This Python project was initially intended for a full migration from Slack to a new Matrix homeserver and allows reusing the imported user accounts. We have some research groups using Slack that would like to import their Slack workspace history to our Matrix homeserver. This PR allows to import a (free) Slack export to a fresh and empty Synapse instance that is federated with our main homeserver. We do not need a full "migration": we kick all imported users and invite the existing Matrix users from our homeserver.

Two groups already imported the history and switched to Matrix, one more is in queue and probably more to come.

This is a really, really exciting development, and the context for which Sven is expecting to use it is BIG, I can't wait til we can share more about it!

mautrix-twitter

Tulir said:

The Twitter DM bridge I announced last week mostly works now. It does text and reaction bridging in both directions, twitter->matrix media bridging, end-to-bridge encryption and backfilling. I also added support for it in mautrix-manager for web-based login.

If it mostly works, I guess it's time to mostly start trying it out!

Dept of Clients ๐Ÿ“ฑ

Fluffychat

sorunome offered:

Fluffy 0.16.0 has been released! It is already available on F-Droid, Google Play and IOS Testflight will follow. You can also try it out in the webbrowser. Visit https://fluffychat.im

Features

  • Implement web notifications

  • Implement a connection status header

Changes

  • Switch out database engine for faster performance

  • Greatly improve startup time

  • Added languages: Galician, Croatian, Japanese, Russian, Ukrainian - Thanks a lot to all the weblate users!

  • Only show the microg toast once, if you have play services disabled

  • Homeserver URL input now strips trailing whitespace and slash - Thanks @Katerina

  • Also use prev_content to determine profile of a user: This allows the username and avatar of people who left a group to still be displayed

Fixes:

  • Fix not being able to initiate key verification properly

  • Fix message sending being weird on slow networks

  • Fix a few HTML rendering bugs

  • Various other fixes

  • Fix the 12h clock showing 00:15am, instead of 12:15am - Thanks @not_chicken

  • Fix an issue with replies and invalid HTML

  • Fix messages getting lost when retrieving chat history

  • Fix a bug where an incorrect string encoding from the server is assumed

  • Fix a bug where people couldn't log in if they had email notifications enabled

Mirage

miruka reported:

0.6.0 is out today:

Added

  • Room member profiles:

    • Can be accessed by clicking on a user in the room's right pane, or focusing the filter field and navigating with up/down/enter/escape

    • Includes large avatar, display name, user ID, presence info,

      power level control and E2E sessions list

  • E2E Verification:

    • Sessions for room members can now be (manually) verified from their profile

    • Sessions for different accounts within the same client will automatically

      verify each others based on session keys

    • Verifying a session will automatically verify it for all connected accounts,

      as long as the session keys are identical

  • Presence:

    • Added presence (online, unavailable, invisible, offline) and status message control to the accounts context menu in the room list

    • Added togglePresence{Unavailable,Invisible,Offline} keybinds bound by

      default to Ctrl+Alt+{A/U,I,O}

    • Added openPresenceMenu keybind to open the current account's context

      menu, Alt+P by default

    • The room member list is now sorted by power level, then presence, then name

    • The room member list will display presence orbs and last seen time for

      members if the server supports it. Last seen times for offline members are also automatically retrieved as needed.

    • Set logged in accounts offline when closing Mirage

    • Linux/X11 specific: Add auto-away feature configurable by the

      beUnavailableAfterSecondsIdle setting (default 600 for 10mn), can be disabled by setting it to -1.

  • Session sign out: you can now sign out your other sessions from the

    account settings. This currently only supports password authentication.

  • Pasting images via Ctrl+V or composer context menu, shows a preview of

    the image before uploading

  • Added basic keyboard navigation for account settings session list

  • Add a verified devices indicator to encrypted room headers

  • Add experimental support for rendering of inline images and custom emotes in

    messages

  • Add kineticScrollingMaxSpeed and kineticScrollingDeceleration settings

  • When highlighting accounts, rooms or members in lists

    (focus filter field and use up/down), the highlighted item's context menu can now be accessed with the keyboard Menu key

  • Support for Menu key when keyboard-navigating messages in the timeline

  • Add context menus to text field and areas

  • Add a button to quickly expand the room pane when collapsed and focus

    the filter field

  • Clicking on the current tab button for the room pane now fully hides it,

    this can also be toggled with the new toggleHideRoomPane keybind (default Ctrl+Alt+R)

Changed

  • When panes are smaller than their default width due to user resizing or

    window size constraints, focusing certain elements will auto-expand them until the focus is lost: filter fields, member profile and room settings

  • Reduced the default kinetic scrolling speed, which was hardcoded to an

    aggressive 4000 before. This can be restored with the kineticScrollingMaxSpeed setting.

  • Improve key verification popup texts and make the session details copiable

  • Power levels/room permission change events will now show a line of text or

    table containing the details of what exactly changed

  • Messages containing tables will no longer be width-limited

  • Using the sendFileFromPathInClipboard keybind (default Alt+Shift+S)

    now shows a preview of the file if it's an image and asks for confirmation

  • Image messages now show spinners when loading the thumbnail

  • Clicking on a GIF message will now open it externally like other images

    instead of pausing it. A dedicated play/pause button is now displayed in the corner.

And more: full changelog

Riot-iOS, no sorry, Element-iOS

Manu offered:

Last week, we forgot to announce that we renamed the Riot-iOS app to Element but this is not a surprise anymore. The app version is now 1.0.0. This change came with a lot of UI tweaks like new icons and new colors.

Since then, we made bug fixes we will release soon. This week, we also worked on PIN protection for the app, including support of Touch ID and Face ID.

Element Android

Francis offered:

This week has been focused on bug fixing, there will be a release next week. We also started to work on PIN protection for the app.

quotient

kitsune offered:

Quotient 0.6 released! The release notes are somewhat long, since it's been 4 months since the last stable version update, and more than a year since the 0.5 release - thanking two heroes of this release, and giving a nod to the original Quaternion author who happened to contribute using an inverted time machine. Read here: https://github.com/quotient-im/libQuotient/releases/tag/0.6.0

Big news - first release in a year. Do take a look at the full notes, they're very readable. In particular, they call out contributions from Black Hat, Alexey Andreyev and the original project creator, Felix Rohrbach aka @fxrh.

Dept of SDKs and Frameworks ๐Ÿงฐ

ruma

Ruma is a Rust project to create a comprehensive set of APIs for Matrix. Previously there was a Ruma homeserver project.

jplatte said:

We weren't in TWIM for a while, but that doesn't mean no progress! Apart from Devin's constant work on ruma-events, there was also some movement in ruma-identifiers and ruma-client-api, with the former seeing a new release, 0.17.0.

We're planning to do more releases next week, and hopefully a 0.1 release of the ruma crate that provides a simpler entry point by re-exporting everything else, in one of the weeks after that. Stay tuned!

Dept of Ops ๐Ÿ› 

matrix-docker-ansible-deploy

This Ansible playbook is meant to easily let you run your own Matrix homeserver.

Slavi said:

matrix-docker-ansible-deploy just gained support for its first bot - matrix-reminder-bot.

See our Setting up matrix-reminder-bot documentation to get started.

Then, another report:

matrix-docker-ansible-deploy has gained support for synapse-admin.

See our Setting up Synapse Admin documentation to get started.

Dept of Bots ๐Ÿค–

matrix-wug

dandellion said:

It's been a while since it's come up, but matrix-wug is a bot capable of transcribing characters writable via normal keyboards to scripts from other languages/notation systems

It supports: x-sampa, z-sampa, proto-indo-european, Inuktitut, and Iรฑupiatun.

Now it also supports hiragana! The romanization system is something like Wฤpuro rลmaji, but sticks to Nihon-shiki when in doubt.

I want this transcription to be forgiving, so if you find it not transcribing something in a way you'd expect it to, feel free to DM me!

To use it use the hi key with a delimiter like /x/ or []

hi/konnichiwa maatorikusu!/

vรธgg is also behind pantalaimon now so it now works in encrypted rooms ๐Ÿ˜€

If you need to convert swiggles into a different type of swiggle, dandellion has you covered here.

Jitsi Token Service

kinta reported:

https://gitlab.com/communia/matrix-jitsi-token-service

This bot is not about adapting the current jitsi integration provided by Element IM as widget.

If you have a configured jitsi server to be authenticated with jwt tokens as in https://github.com/jitsi/lib-jitsi-meet/blob/master/doc/tokens.md , this bot will assist you when claiming for a jwt instead of going to jwt.io each time. You'll need to create a user and invite you in each room where you want to create a jitsi room url respecting the matrix power levels in the room.

When the service is running invite the bot and send message !jitsi-jwt

If you are a moderator in the room (alias you have enough power levels to redact messages), then you will get a direct message from bot with the url to jitsi room with the jwt get parameter.

cody 0.7.0

carl told us:

New cody release. @cody:bordum.dk is a chat bot that works as a REPL for your matrix rooms. This week I worked on metrics. I host a Grafana instance with anonymous access allowed, so codys charts are now embedded the #cody:bordum.dk chat room.

Announcing The Very First Release of sMythbot

ssorbom told us:

I am proud to announce the very first release of sMythbot, the Matrix chatbot designed to control your Myth Tv DVR remotely. This release should be considered a tech preview. I welcome feedback and Bug reports. More information on installation and setup is available in the project wiki.

It currently supports the following commands

  • !smythbot help: Display this message

  • !smythbot set mythbackend address: Sets the Myth Tv backend address to use for this room.

  • !smythbot set mythbacked port: Sets the Myth Tv backend port to use for this room.

  • !smythbot view mythbackend address: Allows you to view the Myth Tv backend address set for this room

  • !smythbot view mythbackend port: Allows you to view the Myth Tv backend port set for this room

  • !smythbot view mythbackend info: Allows you to view various pieces of information for the Myth Tv backend connected to this room. It will not work if the address and port are not set.

  • !smythbot display upcoming recordings: Displays the upcoming recordings on your Myth Tv Backend.

  • !smythbot display recorded programs: Displays the recordings from the default recording group that are stored on your Myth Tv Backend.

You can find out more information at my Github Page

I love a project designed to scratch the author's own itch!

Dept of Interesting Projects ๐Ÿ›ฐ๏ธ

Noteworthy Elements for Mobile Web

balaa said:

The team behind Noteworthy (Matrix over WireGuard overlay networks) has started work on bringing better mobile web support for Element (riot-web).

Noteworthy Elements is a lightweight shim powered by the Ionic Framework thats goal is to bring first-class support for Element running on mobile devices.

What we have so far

  • Usable version of Element wrapped in native iOS / Android app

  • Ability to run multiple instances of Element in a native iOS / Android app (ie connect to multiple home servers simultaneously)

Our initial experimentation has been positive and our goal is to make Element the best mobile client for Matrix with minimal fuss. With minimal changes to Element's codebase our goal is to land (significantly better) support for mobile web in upstream Element. Join us over at #noteworthy:tincan.community to get involved!

2020-07-24-fH9Fl-ScreenShot2020-07-23at5.04.31PM.png

Trust-based Moderation Using Distributed Chat Systems for Transitive Trust Propagation

Florian said:

I just stumbled over the master thesis TrustNet: Trust-based Moderation Using Distributed Chat Systems for Transitive Trust Propagation. While it is mainly targeted at systems like Secure Scuttlebut and Cabal, I think it is also of interest for the people thinking about trust-based moderation for Matrix.

Dept of Ping ๐Ÿ“

Here we reveal, rank, and applaud the homeservers with the lowest ping, as measured by pingbot, a maubot that you can host on your own server. Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1fairydust.space309
2bardiharborow.com545
3nicoll.xyz647.5
4grant.org667.5
5elsmussols.net694
6heitkoetter.net871.5
7ragon.xyz876
8acmelabs.space906.5
9opensuse.org915.5
10matrix.vgorcum.com1017

That's all I know ๐Ÿ

See you next week, and be sure to stop by #twim:matrix.org with your updates!

This Week in Matrix 2020-07-17

17.07.2020 00:00 โ€” This Week in Matrix โ€” Ben Parsons

Matrix Live ๐ŸŽ™

Let's hear from Christian about working on his dream projects, his thoughts on bridging, hosting, and the importance and nature of chatbots and assistants.

Dept of Status of Matrix ๐ŸŒก๏ธ

"Element"

This week was the announcement of the much-awaited rebrand: Riot is now Element. In fact, three brands are coalescing into one: Riot and New Vector will be referred to as Element, while the SaaS platform known as Modular.im is now Element Matrix Services.

Note that Matrix is not involved in this change. Matrix is still Matrix, don't worry about that!

CommCon Virtual 2020, with added Matrix

CommCon is an event dedicated to Real-Time Communications. In 2020 they made the difficult decision to go online-only, but had a fear of missing out on the "hallway-track" that is so important to industry events. Their solution was to include a live chat to run alongside their streamed talks!

Matrix was a natural choice for the crowd, but they wanted a way to encourage viewers to join the correct room from their own Matrix clients. To do this, they used the GSOC project from arnav-t - an HTML Embedded client - to present a live scrolling-view of the chat. You can see the result at https://2020.commcon.xyz/live/.

Dept of Spec ๐Ÿ“œ

uhoreg said:

anoa is away this week, so no pretty graph, I'm afraid. (this is intolerable - BP)

MSC status

Merged MSCs

  • No MSCs were merged this week.

MSCs in Final Comment Period:

  • No MSCs in Final Comment Period this week.

New MSCs:

Spec Core Team

This week, the Spec Core Team will be focusing on MSC2610 (Removing m.login.oauth2 from User-Interactive Authentication), MSC2611 (Removing m.login.token from User-Interactive Authentication), MSC2663 (Errors for dealing with non-existent push rules), MSC2674 (Event Relationships), and MSC2689 (Fix E2EE for guests).

Dept of GSoC ๐ŸŽ“๏ธ

Ruma/Matrix GSoC update

Ruma is a Rust project to create a comprehensive set of APIs for Matrix. Previously there was a Ruma homeserver project.

devinr528 reported:

The End is Nigh

This week in the ruma/matrix Google Summer of Code project, I worked on refactoring both ruma-api and ruma-events. After moving some of the larger chunks of the ruma_api_macro::api::Api::to_tokens method to helper functions, I spent time removing repetition from the Request/Response code generated by the ruma_api! macro. For ruma-events, the input parsing was changed to only allow valid names for the Any*Event enums. Altering the input parsing had the added benefit of replacing all of the string comparison and manipulation with strongly typed comparison and manipulation.

The final few issues to be resolved before the next crates.io release for ruma-events can happen are related to redacted events. Support for redacted events was added to the Any*Event enums, they now have redacted variants of each event kind. A few follow-up PR's have been merged to fully integrate redacted events into ruma-events, fixing specific event deserialization issues and splitting the UnsignedData struct into Unsigned and RedactedUnsigned.

HTML Embeddable Matrix

arnav-t reported:

This week for the GSoC project of HTML Embeddable Matrix Client:

  • Added a read receipts menu for messages.

  • Minor bug fixes

  • Automatic hyperlinking of URLs in pipeline

See above for details of this project being used in the wild!

mautrix-go

nikofil announced:

  • Added the capabilities to request room keys from other devices, as well as share room keys with other devices that requested them

  • Currently working on device verification using SAS, will then work on key export / import

neb

  • Updated to latest mautrix version with some minor fixes, most notably using m.encryption event parameters

Opsdroid(GSoC)

tyagdit said:

End to End Encryption with matrix

  • The new connector has been fully implemented!

  • Device verification has been put on hold for the time being

  • No extra configuration is required

  • Check out all the changes here

Matrix database

  • Work has begun on porting the matrix database module to matrix-nio and integrating it into opsdroid core

  • It uses matrix rooms as databases

  • Users can store key value pairs as state events in a room

  • Also works with encrypted rooms to allow for encrypted storage

matrix-ircd GSOC

karlik announced:

for matrix-ircd:

  • Merge in futures 0.3 support for matrix and http modules

  • Opened pull request for updating tests, irc module, and bridge module to futures 0.3 & remove several futures dependencies

  • updating several packages TLS packages to their more modern counterparts

Dept of Servers ๐Ÿข

matrix-media-repo

matrix-media-repo is a highly customizable multi-domain media repository for Matrix

TravisR said:

matrix-media-repo has just released v1.1.3 with several improvements and bug fixes - please give it a go, and get support in #media-repo:t2bot.io

Conduit

Conduit is a Matrix homeserver written in Rust https://conduit.rs

timo told us:

I also investigated why so many sytests fail and created this issue: https://github.com/matrix-org/sytest/issues/913 Apparently Sytest did not expect a server to optimize their /sync responses as much as Conduit does :P.

Note: The official Conduit server is now reachable at "https://conduit.koesters.xyz". Thanks to everyone who supports me on Liberapay or Bitcoin!

Synapse

Neil said:

A big week for matrix.org performance.

Hot on the heels of shipping shardable federation readers last week, this week we shipped shardable federation senders. There is still plenty of work to do, but together these changes has made a massive difference to federation lag overall and hopefully those of you not on matrix.org are noticing the difference when you talk to matrix.org users.

This graph shows the impact to outbound federation lag.

2020-07-17-01oi5-Screenshot2020-07-17at14.39.02.png

Aside from that we also shipped shardable push and frontend proxy workers as both were starting to max out on CPU as well as a shardable client reader, allowing us to shard registration which was especially important this week :)

Finally we moved typing notifications from the master process and optimised incoming replication queuing to buy us a little more head room.

Next steps are to revisit where all the remaining cycles are going on the master process. To help us profile we are migrating to async/await semantics and Patrick produced this natty graph to track progress.

2020-07-17-Uqa2y-Screenshot2020-07-17at14.38.44.png

Outside of performance we shipped a bug fix to prevent large initial syncs taking out the synchrotrons. The admin api sprouted an end point to list room members (thanks awesome-michaeland the ability to reactivate previously deactivated users.

Coming up weโ€™ll dust off the notifications project which has been put on hold while Riot transmogrified into Element and weโ€™ll continue with chipping away at the master process.

Synapse Deployment ๐Ÿ“ฅ๏ธ

Kubernetes

Ananace said:

And another bump of the K8s-optimized Synapse images, this time to 1.17.0

Synapse adoption graphs

We only featured this a month ago, but I want to call attention again to this awesome Synapse version adoption tracking project from Chris . I wanted to know how quickly Synapse 1.17.0 would be the most deployed version (~36 hours), and the answer is right there!

Dept of Bridges ๐ŸŒ‰

mautrix-twitter

Tulir announced:

I started working on a Twitter DM bridge that uses the internal API instead of the complicated official one. It should be easier to set up than bridges using the official API, since there won't be a need to get API keys and forward webhooks. The main risk is that Twitter doesn't like people using the internal API and starts blocking users like Facebook does, but hopefully that doesn't happen.

So far I've only made a simple library for the API, but the bridge should be usable by the next TWIM. The bridge and API library are at https://github.com/tulir/mautrix-twitter and there's a discussion room at #twitter:maunium.net.

Dept of Clients ๐Ÿ“ฑ

Element Android 1.0.0

benoit announced:

Element Android 1.0.0 is out! Download or upgrade it from the PlayStore at https://play.google.com/store/apps/details?id=im.vector.app or download it from the F-Droid store at https://f-droid.org/packages/im.vector.app/

  • PlayStore users: Element should come as a regular upgrade of the application Riot-Android, and the upgrade will update your previous account and data, without the need to log in again.

  • F-Droid users: Element is a new app, you have to install it and log in again.

  • RiotX: RiotX will disappear from the PlayStore (it was only a beta application). We will provide a very last update to inform users to install Element Android

Please report any issues at https://github.com/vector-im/riotX-android (which will probably be renamed soon), because Element Android is actually RiotX code! Thanks for all the contributors of RiotX, we still have lots to do to make the app even better and full featured.

Radical

Davo announced:

After seeing all the Element room avatars, I thought to myself, "you know what, #radical-webext:matrix.org needs a new icon"โ€ฆ so I sat down and combined a couple of icons. The result:

Radical icon

Radical also quickly (as always) got updates when Element 1.7.0 and 1.7.1 were released. Huge thank you to stoic for making Radical in the first place.

Element F-Droid repos

krombel announced:

I updated my F-Droid repos which are containing the dev builds to reflect the latest naming change to Element.

The people who formerly used my repos for getting the dev repo of Riot-Android should update to the new repo. It wont be updated to get Element

As always you can grab the F-Droid or GPlay flavor and you can pick the repo which reflects your flavor on https://fdroid.krombel.de

Note: As "the new repo" is internally the same repo as the one of RiotX (and Riot.imX) the people who already used that don't need to update their packet source. They will get the updates to Element via the old repo urls.

Feel free to use it ๐Ÿ™‚

2020-07-17-izu7P-Screenshot_20200717-182645__01.jpg

Dept of SDKs and Frameworks ๐Ÿงฐ

maubot

Tulir announced:

As promised last week, maubot now supports end-to-end encryption. It's a bit bare at the moment, so you need to manually insert the device ID into the database for it to start working, but other than that it works. Plugins don't need to be changed at all, the framework will handle everything.

While I was adding e2ee to maubot, I also improved mautrix-python's crypto stuff so that it's easier to use it directly as a client library with e2ee. Some day I might even add docs :D

matrix-appservice-cr

Chris Vincent reported:

Related to my previous update here, I've just published an initial version of a Matrix Client-Server client library for the Crystal programming language: https://github.com/cvincent/matrix-client-cr

Is this the first time we've seen tooling for Crystal?

Dept of Ops ๐Ÿ› 

matrix-docker-ansible-deploy

This Ansible playbook is meant to easily let you run your own Matrix homeserver.

Slavi announced:

matrix-docker-ansible-deploy is now ready to help you with the Riot -> Element transition.

We have a few ways to handle the migration depending on how much change and breakage you're willing to tolerate. See our Migrating to Element documentation page.

Incredibly thorough migration paths here!

Dept of Bots ๐Ÿค–

Matrix-Alertmanager bot v0.3.0

jaywink offered:

Matrix-Alertmanager bot has a new release of v0.3.0. Highlights are compatibility with AWS Lambda, better error handling if message fails to send and the ability to do a @room mention on firing alerts. Find it here.

cody 0.6.0

carl reported:

REPL for your matrix rooms

This week, we got support for javascript (nodejs) with !js. The code

complexity was considerably reduced, which should make adding new languages much easier in the future. All Python sub-dependencies are now pinned, making

cody builds even more reproducible.

Chat with cody: @cody:bordum.dk

Read the source: https://gitlab.com/carlbordum/matrix-cody

Dept of Interesting Projects ๐Ÿ›ฐ๏ธ

Noteworthy (Matrix over Wireguard overlay networks)

balaa said:

Noteworthy team (patrick and myself) have open sourced both components (spoke & hub) of Noteworthy (Matrix over Wireguard overlay networks -- https://github.com/decentralabs/noteworthy) we are actively welcoming testers/contributors and working with a handful of projects on incorporating our deployment model over in #noteworthy:tincan.community -- it is also the fastest way (less than a minute) to deploy your own home server! Also, working on incorporating Noteworthy into the popular ansible deployment repo to enable users who don't have access to a publicly accessible to deploy their own home servers.

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. Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1fairydust.space390
2exp.farm555.5
3matrix.vgorcum.com768
4tchncs.de810.5
5settgast.org1026
6moritzdietz.com1046
7ragon.xyz1288
8aragon.sh1383
9elcyb.org1755.5
10kapsi.fi2034

That's all I know ๐Ÿ

See you next week, and be sure to stop by #twim:matrix.org with your updates!

Synapse 1.17.0 released

13.07.2020 16:38 โ€” Releases โ€” Neil Johnson
Last update: 13.07.2020 16:21

Synapse 1.17.0 is here!

Hot on the heels of Synapse 1.16.1, 1.17.0 is a bug fix release most notably containing a fix for 'stuck invites' which happen when we are unable to reject a room invite received over federation.

Get the new releases from any of the usual sources mentioned at https://github.com/matrix-org/synapse/blob/master/INSTALL.md. 1.17.0 is on github here.

Changelog for 1.17.0 follows:

Synapse 1.17.0 (2020-07-13)

Synapse 1.17.0 is identical to 1.17.0rc1, with the addition of the fix that was included in 1.16.1.

Synapse 1.17.0rc1 (2020-07-09)

Bugfixes

  • Fix inconsistent handling of upper and lower case in email addresses when used as identifiers for login, etc. Contributed by @dklimpel. (#7021)
  • Fix "Tried to close a non-active scope!" error messages when opentracing is enabled. (#7732)
  • Fix incorrect error message when database CTYPE was set incorrectly. (#7760)
  • Fix to not ignore set_tweak actions in Push Rules that have no value, as permitted by the specification. (#7766)
  • Fix synctl to handle empty config files correctly. Contributed by @kotovalexarian. (#7779)
  • Fixes a long standing bug in worker mode where worker information was saved in the devices table instead of the original IP address and user agent. (#7797)
  • Fix 'stuck invites' which happen when we are unable to reject a room invite received over federation. (#7804, #7809, #7810)

Updates to the Docker image

  • Include libwebp in the Docker file to properly handle webp image uploads. (#7791)

Improved Documentation

  • Improve the documentation of the non-standard JSON web token login type. (#7776)
  • Update doc links for caddy. Contributed by Nicolai Sรธborg. (#7789)

Internal Changes

  • Refactor getting replication updates from database. (#7740)
  • Send push notifications with a high or low priority depending upon whether they may generate user-observable effects. (#7765)
  • Use symbolic names for replication stream names. (#7768)
  • Add early returns to _check_for_soft_fail. (#7769)
  • Fix up synapse.handlers.federation to pass mypy. (#7770)
  • Convert the appserver handler to async/await. (#7775)
  • Allow to use higher versions of prometheus_client <0.9.0 which are expected to introduce no breaking changes. Contributed by Oliver Kurz. (#7780)
  • Update linting scripts and codebase to be compatible with isort v5. (#7786)
  • Stop populating unused table local_invites. (#7793)
  • Ensure that strings (not bytes) are passed into JSON serialization. (#7799)
  • Switch from simplejson to the standard library json. (#7800)
  • Add signing_key property to HomeServer to save code duplication. (#7805)
  • Improve stacktraces from exceptions in background processes. (#7808)
  • Fix various spelling errors in comments and log lines. (#7811)

This Week in Matrix 2020-07-10

10.07.2020 00:00 โ€” This Week in Matrix โ€” Ben Parsons

Matrix Live ๐ŸŽ™

This week it's Open Tech Will Save Us!

Dept of Spec ๐Ÿ“œ

anoa reported:

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.

MSC Status

Merged MSCs:

  • No MSCs were merged this week.

MSCs in Final Comment Period:

New MSCs:

Note that a majority of those new MSCs are split out from MSC1849 (the aggregations MSC) to make it easier to review ๐Ÿ™‚

Spec Core Team

In terms of Spec Core Team MSC focus for this week, we're sticking to implementation work. anoa did have some time this week to make the graphs more useful though:

2020-07-10-FFL8i-image.png

Check out that graph!

Dept of GSoC ๐ŸŽ“๏ธ

HTML embeddable client GSoC project

arnav-t told us:

This week for my HTML embeddable client GSoC project:

  • Added full markdown support and made replying and quoting fully functional

  • Added a lot more configuration options to the client, including a read-only mode

  • Fixed some bugs

go-neb

nikofil said:

  • work is still being done on the bot's functionality to test different crypto functionalities of other Matrix clients when thrown in a room with them

  • slight improvements to mautrix-go (sql store can now store multiple Olm accounts and their sessions, key rotation params taken from encryption event, other minor things)

  • add some simple instructions to the readme for enabling e2ee for neb as well as integrate these mautrix changes (PR #330)

  • room_key_requests will probably be the next thing to be developed for mautrix-go

Nheko (GSoC)

Nheko is a desktop client using Qt, Boost.Asio and C++17. It supports E2EE (with the notable exception being device verification for now) and intends to be full featured and nice to look at

Chethan said:

  • Added user cache which stores the encrypted user keys and updates them on sync

  • Added Verification Cache which stores verified devices of a user

  • Showing Verification Status of a device on Userprofile

Dept of P2P ๐Ÿ‘ฅ

Riot iOS P2P Demo

Neil Alexander announced:

Over the last couple of weeks I have been working on the next P2P demo, using Yggdrasil as the transport instead of libp2p. Although libp2p is arguably more featureful in many ways, Yggdrasil does have one major benefit in that it provides full overlay routing. Participants in the network can carry traffic on behalf of other participants, resulting in something much closer to a true mesh network.

The mad science doesn't end there however. I've also built a custom Riot iOS build that includes the full Dendrite P2P demo (yes, that's a homeserver running locally on your phone). If you have an iPhone or iPad, it's available in public TestFlight right now and you can play with it!

The demo still is very experimental and has a number of bugs still (including but not limited to messages occasionally taking a while to deliver, the app crashing when going into the background sometimes etc.) but we'll be improving it further in the coming weeks and it's quite fun to play with, particularly if you can do so with other people nearby.

Thanks to the same technology that powers AirDrop, the demo will automatically find and connect to other nearby devices running the demo and build up a network automatically - even if you are not on the same Wi-Fi network (or indeed connected to Wi-Fi at all)! If you don't have any other nearby peers to test with then fear not - you can still configure a public static peer in the app settings and join the wider network that way.

With any luck the room directory will even work too, showing published rooms from other nearby devices. If not, try joining #beachparty:b5ae50589e50991dd9dd7d59c5c5f7a4521e8da5b603b7f57076272abc58b374 from within the app.

Questions, comments or feedback? Join us in #p2p:matrix.org!

Dept of Servers ๐Ÿข

A new way to test homeservers - Complement

kegan reported:

Many of you know that I work on a Go homeserver called Dendrite, and so I've had to get familiar with SyTest: a black-box homeserver integration testing project. Unfortunately SyTest has a number of problems: from the dialect of perl, lack of documentation for federation bits, the inability to run a single test, and so on. Having a solid black-box integration testing project is crucial for the ecosystem to ensure spec compliance (and hence compatibility between server implementations) and for making all servers more stable and reliable.

As a side project I've been working on a modern Go rewrite called Complement which is now ready for a bit more exposure. It currently only has a handful of SyTests converted but I hope to rapidly expand the number in the coming weeks. Complement makes heavy use of Docker to agnostically run homeservers, and already includes a Dockerfile for configuring a Dendrite instance. To try it out, clone the repo and run:

(cd dockerfiles && docker build -t complement-dendrite -f Dendrite.Dockerfile .)

COMPLEMENT_BASE_IMAGE=complement-dendrite:latest go test -v ./tests

If you're interested in learning more and maybe adding some tests check out ONBOARDING.md.

My overall hope is that Complement will lower the barrier to entry when adding tests by so much that it encourages any bugfix/feature in any homeserver implementation to result in a new test. This will benefit everyone and create a feedback loop which will make Matrix even more reliable.

Asked about Sytest and SyTS, Kegan added:

Complement currently implements the same tests as sytest, so tests which pass sytest will pass complement (though that will diverge as complement will guard against more race conditions by default). There's about 9 different kinds of tests currently testing CS-API and Federation (outbound to a dummy server and inbound via a federation client)

The problem with SyTS was that the test tooling around it ultimately wasn't expressive enough. I was using Jest and kept finding myself fighting it by bumping up against issues like https://github.com/facebook/jest/pull/8751 and the multi-process parallelisation stuff was too opaque. The assertion helper functions also lacked context because they rely on behavioural testing names like describe("foo") { it("should say bar") { ... } etc so when your assertion fails (eg wrong value for a JSON key using assert equals) it just says unhelpfully "foo != bar" where what I really want is to know what it actually does say then, and other contextual info around the object (maybe the key name was typod). When I realised that the assertion lib didn't have this and I'd need to add it, coupled with parallelisation concerns and head-desking against Jest, I found myself wishing I just used something else. I stuck with it though and then realised that all the federation stuff (signature checking, canonical JSON, etc) would need to re-implemented when I knew I had working code in Go. Both of these things combined and I thought "you know what, I'm just going to do this in Go" but you'll note that the architecture is identical, so SyTS lives on as an early prototype for Complement ;)

Find out more in the room: #complement:matrix.org.

Dendrite / gomatrixserverlib

Dendrite is a next-generation homeserver written in Go

Neil Alexander told us:

While I've been busy distracted with the P2P demo, Kegan has been on a mission to implement some new features. Changes this week include:

  • Redaction is now mostly implemented

  • User-interactive authentication is now implemented

  • Device lists in the client API are now implemented

  • Media APIs are now available on both /r0 and /v1 endpoints which makes Riot iOS a bit happier

  • Some federation sender bugs have been fixed

  • Some database locks in the federation sender in SQLite mode have been fixed

Spec compliance has improved a bit:

  • Client-Server APIs: 48%, up from 45% last week

  • Server-Server APIs: 51%, up from 50% last week

Conduit

Conduit is a Matrix homeserver written in Rust https://conduit.rs

timo said:

Conduit

Hi everyone, here are some things we worked on this week:

  • Work on to-device sending improvements

  • Work on room tags (thanks to @gnieto)

  • Merged /logout/all endpoint (thanks to @CapsizeGlimmer)

  • Work on /joined_members (thanks to @CapsizeGlimmer)

Last week we had a list of major features still missing. Here's a list of what already works:

Registering, logging in, creating rooms, room visibility, join rules, basic permission management, public room list, inviting, creating DMs, e2e encryption, key backups, device verification, cross signing, notifications, uploading media/files (also user/room avatars), lower-resolution media thumbnails, voip calls and a few other thing's I'm forgetting right now. So it's useable for non-federating chats already.

Thanks to everyone who supports me on Liberapay or Bitcoin!

Synapse

Neil reported:

In Synapse land this week, we shipped 1.16.0 and err 1.16.1.

Lifting from the blog post, the highlights are:-

  • An important performance fix to improve room state resolution.

  • An option to enable e2e by default for new rooms.

  • Ability to run multiple media repo workers side by side.

  • Ability to mark specific content as being safe from quarantine.

  • Bug fixes to make migrating from SQLite to Postgres more reliable - if you are running sqlite for anything other than evaluation purposes then please migrate!

We also put out a release candidate for 1.17.0 which all being well weโ€™ll release on Monday. 1.17.0 is really a bug fix release the most notable being finally squashing a long standing bug that caused locally rejected invites to get โ€˜stuckโ€™ client side.

Continuing our matrix.org performance theme, having now got the CS API largely into a good state of responsiveness, we are looking at federation lag. Today we shipped a sharded Federation Reader to matrix.org which has reduced the average lag from seconds to milliseconds. We are just running two currently and are still tuning as we figure out how to get the best from it. Initial impressions seem promising. Watch this space.

2020-07-10-qiwpr-Screenshot2020-07-10at16.02.39.png

We also have a PR out for review to shard the Federation Sender, which will have much the same effect in the other direction.

Once we have sending messages via the Client-Server API, much reduced federation lag and a sharded Pusher weโ€™ll take a look at room joins.

Synapse Deployment ๐Ÿ“ฅ๏ธ

dacruz21/matrix-chart

Typo Kign reported:

v2.3.0 of dacruz21/matrix-chart has been published with Synapse 1.16.

Kubernetes

Just pushed the 1.16 K8s-optimized Synapse image tags, this time done from a tablet in a server room between moving a bunch of hardware.

New WireGuard-based deployment

balaa announced:

Hi everyone, my friend Patrick and I have been working on making Matrix more accessible in the context of personal overlay networks powered by WireGuard. Weโ€™ve built a 1-click deployment solution for Synapse & Riot based on docker. The interesting part is that it gives you public addressability via a distributed proxy service that we have been developing. We are free and open source and welcoming contributors and testers ASAP! We are imagining an ecosystem for building collaborative intranets and see them as foundational to a freer, more equitable internet. Please join us at #noteworthy:tincan.community See https://www.patrickdlg.com/personal-messaging/ and https://noteworthy.tech/start/

Dept of Bridges ๐ŸŒ‰

mautrix-whatsapp

Tulir announced:

mautrix-whatsapp got some bugfixes and improvements:

  • You can now create private chat portals by inviting a WhatsApp ghost user (e.g. from a group chat)

  • WhatsApp users in groups are now synced to Matrix properly, including kicking users who left the group without the bridge noticing

matrix-sms-bridge

Benedict offered:

I fixed some bugs in matrix-sms-bridge and added a feature that allows delayed sending of sms messages with the sms send command. It runs very fast and stable in my production environment.

Dept of Clients ๐Ÿ“ฑ

Nheko

Nheko is a desktop client using Qt, Boost.Asio and C++17. It supports E2EE (with the notable exception being device verification for now) and intends to be full featured and nice to look at

Nico (@deepbluev7:neko.dev) reported:

Not much to talk about currently, since I'm breaking my Nheko to replace the entire event store at this moment, but I have some heads up on an annoying bug that I fixed on my branch:

Sometimes we had a weird issue, where Nheko wouldn't load the language the user set on their system. This was especially annoying when I wanted to test a specific language, like Japanese, and I couldn't figure out the right LANG* variables to set the language to Japanese in Nheko. Turns out, this was a bug in Nheko and you wouldn't have guessed so, when looking at the examples in the Qt documentation. Anyway, KDAB wrote a nice blogpost explaining this issue: https://www.kdab.com/fixing-a-common-antipattern-when-loading-translations-in-qt/

If you are a Qt developer, you may want to check your applications, if you are also affected.

Riot-iOS

steve offered:

This week, we worked on the rebranding.

RiotX / Riot-Android

benoit announced:

We will release a beta (0.91.5) of Riot-Android this evening, including all the recent changes and lots of fixes. We are still working to prepare the great release!

Daydream

MTRNord told us:

While not much is happening on the master branch some things happened on the Redesign branch:

  • Daydream does the sync now on a worker which is similar to using a thread

  • jplatte made a PR for optimizing multiple Parts of the Code which significantly improved the overall Daydream performance ( https://github.com/daydream-mx/Daydream/pull/22 )

  • Some rework of the Login logic happened to prepare for well-known support

Dept of SDKs and Frameworks ๐Ÿงฐ

mautrix-python

Tulir offered:

When I initially implemented end-to-bridge encryption in mautrix-python, I used matrix-nio in a slightly hacky way to get it done quickly. It worked fine in some cases, but also caused some undecryptable messages. I tried switching to using matrix-nio's crypto module directly, but the sans-I/O design made that difficult: there were too many parts that needed to be hooked up to the actual I/O and I wasn't able to find them all. In the end, I just decided to implement the basic e2ee stuff directly in mautrix-python the same way it's implemented in mautrix-go.

All my bridges based on mautrix-python (Telegram, Facebook and Hangouts) have been switched to use the new crypto stuff. After a few initial bugs that are already fixed, it seems to work better than the old system. I'll probably add native e2ee to maubot soon too, which is my last main project that's still missing e2ee.

Dept of Internet of Things ๐Ÿ’ก

Mozilla IoT Matrix Adapter 0.3

Christian reported:

The Mozilla IoT Matrix Adapter can send posts based on events in your home.

Version 0.3 brings the ability to use room aliases instead of internal room ids. Furthermore, you can configure it to accept invites and follow room upgrades.

Due to utter negligence and malpractice by myself, we missed the update for this project last week. Of course, 0.2 is now superseded by 0.3, but here is the 0.2 update anyway:

Released v0.2.0 of the Mozilla IoT Matrix adapter. It's now possible to post in multiple rooms (still one per post).

Dept of Bots ๐Ÿค–

Cat Disruptor 7000

Stephen D told us:

I wrote a pretty simple Matrix bot in Rust which is loosely based on Cat Disruptor 6000. It will react with ๐Ÿˆ๏ธ to any message containing the string "cat" *. Since it is a small project, I hope it can be used as an example for other people interested in writing Matrix bots in Rust. It implements several important features (crypto/device store, auto-accepting invites, crafting custom events, etc.) You can host it yourself, or you can try it out by inviting the user "@catdisruptor:m.scd31.com" to your room! https://git.scd31.com/stephen/cat-disruptor-7000

* Cat Disruptor 6000 does not do this (it is used for disrupting monologues with cat pictures). However, many instances of Cat Disruptor 6000 also include a separate bot, which is what Cat Disruptor 7000 is mimicking.

matrix-imposter-bot

mr_johnson22 said:

matrix-imposter-bot - A bot that uses your account to repeat other people's messages. This gives relay-bot capabilities to puppet-only bridges.

Updates:

  • Can be much more easily deployed with a production-level WSGI server. It comes with waitress but it's possible to use any other server.

  • Member join/leave/rename now post messages

  • Shuts down when receiving a term/exit/quit signal, instead of hanging

For more details, see https://github.com/mrjohnson22/matrix-imposter-bot

Dept of Interesting Projects ๐Ÿ›ฐ๏ธ

cody

carl offered:

cody is a REPL for your matrix chat rooms.

This week, the big new feature was support for Ruby with the message prefix !rb.

Chat with cody: @cody:bordum.dk

Read the source: https://gitlab.com/carlbordum/matrix-cody

Dept of Jobs ๐Ÿ’ฐ๏ธ

Famedly is recruiting

sorunome announced:

Heya, we (famedly) are looking for about 2-3 more flutter developers. We are a german startup which works on revolutionizing communication in the medical area. We build on top of matrix, so having some matrix-knowledge would be very beneficial.

You might have seen us previously in TWIM with projects such as famedly-email-bridge or the famedly dart SDK.

While we are based in Berlin we do allow remote work, and communication in english is fine, too.

If you are interested or have more questions, please message Niklas Zender.

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. Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1fairydust.space334
2matrix.vgorcum.com637.5
3lossy.network657
4asra.gr795
5swag.industries1407.5
6lo.hn1481
7finallycoffee.eu1804
8nzbr.de1885.5
9halogen.city2275
10utzutzutz.net2462.5

That's all I know ๐Ÿ

See you next week, and be sure to stop by #twim:matrix.org with your updates!

Synapse 1.16.0 released

08.07.2020 19:18 โ€” Releases โ€” Neil Johnson
Last update: 08.07.2020 14:45

Synapse 1.16.0 is here!

Notable additions in 1.16.0 include:-

  • An important performance fix to improve room state resolution.
  • An option to enable e2e by default for new rooms.
  • Ability to run multiple media repo workers side by side.
  • Ability to mark specific content as being safe from quarantine.
  • Bug fixes to make migrating from SQLite to Postgres more reliable - if you are running sqlite for anything other than evaluation purposes then please migrate!

Note, we have deprecated the m.login.jwt login method in favour of org.matrix.login.jwt see the changelog for more details.

Enjoy!

Get the new releases from any of the usual sources mentioned at https://github.com/matrix-org/synapse/blob/master/INSTALL.md. 1.16.0 is on github here.

Changelog for 1.16.0 follows:

Synapse 1.16.0 (2020-07-08)

No significant changes since 1.16.0rc2.

Note that this release deprecates the m.login.jwt login method, renaming it to org.matrix.login.jwt, as m.login.jwt is not part of the Matrix spec. Otherwise the behaviour is identical. Synapse will accept both names for now, but this may change in a future release.

Synapse 1.16.0rc2 (2020-07-02)

Synapse 1.16.0rc2 includes the security fixes released with Synapse 1.15.2. Please see the 1.15.2 release notes for more details.

Improved Documentation

  • Update postgres image in example docker-compose.yaml to tag 12-alpine. (#7696)

Internal Changes

  • Add some metrics for inbound and outbound federation latencies: synapse_federation_server_pdu_process_time and synapse_event_processing_lag_by_event. (#7771)

Synapse 1.16.0rc1 (2020-07-01)

Features

  • Add an option to enable encryption by default for new rooms. (#7639)
  • Add support for running multiple media repository workers. See docs/workers.md for instructions. (#7706)
  • Media can now be marked as safe from quarantined. (#7718)
  • Expand the configuration options for auto-join rooms. (#7763)

Bugfixes

  • Remove user_id from the response to GET /_matrix/client/r0/presence/{userId}/status to match the specification. (#7606)
  • In worker mode, ensure that replicated data has not already been received. (#7648)
  • Fix intermittent exception during startup, introduced in Synapse 1.14.0. (#7663)
  • Include a user-agent for federation and well-known requests. (#7677)
  • Accept the proper field (phone) for the m.id.phone identifier type. The legacy field of number is still accepted as a fallback. Bug introduced in v0.20.0. (#7687)
  • Fix "Starting db txn 'get_completed_ui_auth_stages' from sentinel context" warning. The bug was introduced in 1.13.0. (#7688)
  • Compare the URI and method during user interactive authentication (instead of the URI twice). Bug introduced in 1.13.0. (#7689)
  • Fix a long standing bug where the response to the GET room_keys/version endpoint had the incorrect type for the etag field. (#7691)
  • Fix logged error during device resync in opentracing. Broke in v1.14.0. (#7698)
  • Do not break push rule evaluation when receiving an event with a non-string body. This is a long-standing bug. (#7701)
  • Fixs a long standing bug which resulted in an exception: "TypeError: argument of type 'ObservableDeferred' is not iterable". (#7708)
  • The synapse_port_db script no longer fails when the ui_auth_sessions table is non-empty. This bug has existed since v1.13.0. (#7711)
  • Synapse will now fetch media from the proper specified URL (using the r0 prefix instead of the unspecified v1). (#7714)
  • Fix the tables ignored by synapse_port_db to be in sync the current database schema. (#7717)
  • Fix missing Content-Length on HTTP responses from the metrics handler. (#7730)
  • Fix large state resolutions from stalling Synapse for seconds at a time. (#7735, #7746)

Improved Documentation

  • Spelling correction in sample_config.yaml. (#7652)
  • Added instructions for how to use Keycloak via OpenID Connect to authenticate with Synapse. (#7659)
  • Corrected misspelling of PostgreSQL. (#7724)

Deprecations and Removals

  • Deprecate m.login.jwt login method in favour of org.matrix.login.jwt, as m.login.jwt is not part of the Matrix spec. (#7675)

Internal Changes

  • Refactor getting replication updates from database. (#7636)
  • Clean-up the login fallback code. (#7657)
  • Increase the default SAML session expiry time to 15 minutes. (#7664)
  • Convert the device message and pagination handlers to async/await. (#7678)
  • Convert typing handler to async/await. (#7679)
  • Require parameterized package version to be at least 0.7.0. (#7680)
  • Refactor handling of listeners configuration settings. (#7681)
  • Replace uses of six.iterkeys/iteritems/itervalues with keys()/items()/values(). (#7692)
  • Add support for using rust-python-jaeger-reporter library to reduce jaeger tracing overhead. (#7697)
  • Make Tox actions work on Debian 10. (#7703)
  • Replace all remaining uses of six with native Python 3 equivalents. Contributed by @ilmari. (#7704)
  • Fix broken link in sample config. (#7712)
  • Speed up state res v2 across large state differences. (#7725)
  • Convert directory handler to async/await. (#7727)
  • Move flake8 to the end of scripts-dev/lint.sh as it takes the longest and could cause the script to exit early. (#7738)
  • Explain the "test" conditional requirement for dependencies is not all of the modules necessary to run the unit tests. (#7751)
  • Add some metrics for inbound and outbound federation latencies: synapse_federation_server_pdu_process_time and synapse_event_processing_lag_by_event. (#7755)

This Week in Matrix 2020-07-03

03.07.2020 00:00 โ€” This Week in Matrix โ€” Ben Parsons

Matrix Live ๐ŸŽ™

Dept of Status of Matrix ๐ŸŒก๏ธ

Open Tech Will Save Us 4

The next Open Tech Will Save Us event will take place on Wednesday, that's 2020-07-08! Line-up is confirmed as:

Dept of Spec ๐Ÿ“œ

anoa reported:

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.

MSC Status

Finished Final Comment Period:

MSCs in Final Comment Period:

  • No MSCs are in FCP.

New MSCs:

Spec Core Team

In terms of Spec Core Team MSC focus for this week, as last week we are sticking with "implementation" for now. We'll be back soon :)

Dept of GSoC ๐ŸŽ“๏ธ

This week was the first evaluations, we'll have results to share next week.

matrix-ircd (GSOC)

karlik offered:

for matrix-ircd:

  • Removed futures 0.1 dependency & move all modules to futures 0.3

  • Update all tests to use async / await

  • Begin merging updated futures to async_await branch

go-neb

From nikofil:

  • e2ee merged and some bugs fixed (pr #324)! You should be able to use neb normally in an encrypted room now, if that's not the case please let us know!
  • Added integration tests for both encrypted and unencrypted rooms to neb in order to catch things that might break some core functionality in a subtle way (issue #326)
  • Similarly, created a PR for mautrix-go for testing the Olm and Megolm session establishment and message encryption / decryption (pr #12)
  • Next up, working on a service for neb for testing the crypto functionality of other clients: neb will send messages to a room, rotate keys etc. and your client is supposed to respond!

Dept of Servers ๐Ÿข

Dendrite / gomatrixserverlib

Dendrite is a next-generation homeserver written in Go

Neil Alexander said:

This week has seen some new architectural changes and a number of bugs fixed:

  • A new Current State Server component has been added, which tracks room state

  • The Public Rooms API has been deprecated in favour of the Current State Server

  • Event size limits are now honoured with the correct return code

  • Invites have seen some refactoring and retiring invites should work better now

  • The federation sender now persists unsent PDUs to the database and will automatically retry when Dendrite is restarted, making resend behaviour much more reliable (particularly in the P2P demos)

  • Some room checks in /state and /state_ids have been fixed

  • Some additional restrictions have been added to /send and we now return the correct error codes

  • A bug where current state was incorrectly used when getting missing/backfill events has been fixed

  • A bug where you couldn't rejoin a room that you created after wiping your database has been fixed

Spec compliance:

  • Client-Server APIs: 45%

  • Server-Server APIs: 50%

Conduit

Conduit is a Matrix homeserver written in Rust https://conduit.rs

timo reported:

This week I didn't have much time to work on Conduit, but together with @the0 we could implement both password changing and account deactivation!

With last week's key backup and cross-signing PR landing in master, here's a list of all major features still missing from Conduit:

  • All of Federation

  • Appservices

  • Push Notifications

  • Notification settings

  • Message Search

  • Presence

  • Room Tagging

Thanks to everyone who supports me on Liberapay or Bitcoin!

Synapse

richvdh reported:

Synapse 1.15.2 shipped this week with some important security fixes - if you haven't already upgraded, please do asap! Meanwhile, we're also preparing a 1.16 release with the normal round of bugfixes and incremental improvements.

The big focus in the Synapse team continues to be on performance for larger Synapse instances, which is reflected in the support in 1.16 for running multiple media worker processes. We're working on giving other worker processes the same treatment, so expect more of the same in the weeks to come!

Synapse Deployment ๐Ÿ“ฅ๏ธ

Kubernetes

Ananace announced:

Just pushed the 1.15.2 tags for the K8s-optimized Synapse image.

Docker matrix

Mathijs offered:

The avhost image including coturn, jemalloc, and mjolnir for synapse 1.15.2 was released at avhost/docker-matrix:v1.15.2, while the RCs images were released on my personal repo; mvgorcum/docker-matrix:v1.16.0rc1 and mvgorcum/docker-matrix:v1.16.0rc2

Dept of Bridges ๐ŸŒ‰

Twilio & Maubot based SMS bridge

Jeff Casavant offered:

I wrote a very simple Twilio & Maubot based SMS bridge recently which I've been running for long enough with no delivery errors that I'd consider it stable. It's oriented towards bridging many individuals to single rooms via SMS. You'll need to have a Maubot instance in order to run it.

https://github.com/jeffcasavant/MaubotTwilio

Dept of Clients ๐Ÿ“ฑ

Syphon - new client announcement

usbfingers offered:

Hey TWIM ,

Tuesday, I did a soft announcement of open alpha for Syphon - a privacy centric matrix client

Source: https://github.com/syphon-org/syphon

Website: https://syphon.org

Features:

  • no analytics.

  • no proprietary third party services

    • iOS will have APNS opt-in, but will be made clear to the user
  • all data is AES-256 encrypted at rest

  • E2EE for direct chats using Olm/Megolm

    • group chats will be supported in the coming weeks
  • all indicators of presence are opt-in only (typing indicators, read receipts, etc)

  • customize themes and colors throughout the app

Please note there's still a lot of work to do and a lot of features missing that other clients have. It's not ready for everyday use.

Please let me know if you have any questions or would like to contribute!

Riot Web

Ryan told us:

This week we released 1.6.8, and the highlights include:

  • Upgraded to Electron 9 for desktop builds, which should fix various Linux tray icon issues

  • Jump to first unread message improved to handle reactions and other non-message events

  • Desktop now shows a file saved message when downloading a file

  • Cross-signing setup flows reworked to simplify choosing a security phrase or key

Fractal

Alexandre Franke announced:

The previous Fractal update was quite a while ago but weโ€™ve kept busy.

There has been a lot of under the hood work that users wonโ€™t notice and which we wonโ€™t delve into. In addition to them, we have a few nice things:

  • Matrix API tokens are redacted in logs for better privacy when submitting bug reports.

  • A send button was added next the message entry. This is especially relevant for touch screens.

  • We are less noisy with typing notifications that we send out.

  • We support SOCKS proxies.

  • Notifications for non text messages have been tweaked.

  • We gained support for edited message display. They are replaced with the newer content and a little icon is shown next to them. Editing messages is not supported yet though.

2020-07-03-ZFc9l-Capturedโ€™รฉcrande2020-07-0317-26-53.png

NovaChat July 3 update:

eric told us:

  • Added icons for each chat network to room list

  • Got Twitter DM bridge working again

  • Improved search bar UI

  • On-boarded 30 new users!

  • Launched (accidentally) on Hacker News

  • Fixed a ton of reliability bugs in the 7 bridges we support (changelog)

  • We are hiring (full-time or part-time) remote React developers to work on our (source available, still TBD on final license) Riot fork Send me a DM if interested.

2020-07-03-LUhRG-image.png

NovaChat has been getting good coverage lately, on Twitter and Hacker News.

RiotX published in the beta channel of the Riot-Android app

benoit announced:

RiotX is now published in the beta channel of the Riot-Android app: https://play.google.com/store/apps/details?id=im.vector.app. You can get the last beta version by becoming a tester if you want to. There will be no more update of RiotX on the PlayStore. Current RiotX users should signout from RiotX and signin again on Riot-Android. Riot-Android users do not have to do that. The changelog can be read here https://github.com/vector-im/riotX-android/releases/tag/v0.91.3-beta. And this week we are working on implementing what's remain on our list, and we are fixing as many bugs as we can before the great release.

Riot-iOS

steve offered:

This week, we made some improvements for the cross-signing UX.

We started to work on the rebranding. And we also made some small improvements in the display of some events in the timeline.

Dept of Ops ๐Ÿ› 

ma1sd release 2.4.0

ma1uta offered:

ma1sd release 2.4.0.

Changes:

  • Enabled v2 API by default.

  • Added experimental support of the database connection pooling for postgresql

  • Added option to bind ma1sd to specified address.

  • Added error logging for LDAP authorization.

  • Added full request and response logs for debug.

  • Avoid including bridged user in directory lookups (https://github.com/ma1uta/ma1sd/pull/45)

  • Add experimental multi-platform buillds for amd64 and arm64 platforms.

  • remove warning about matrix-synapse-ldap3 (https://github.com/ma1uta/ma1sd/pull/50)

Bugfixes:

Downloads:

matrix-docker-ansible-deploy

This Ansible playbook is meant to easily let you run your own Matrix homeserver.

Slavi said:

it appears to be puppet week in matrix-docker-ansible-deploy-land!

Thanks to various contributors (Johanna Dorothea Reichmann, Tulir Asokan and Hugues Morisset), the playbook has gained support for 4 new bridges: mx-puppet-instagram (see our docs), mx-puppet-twitter (see our docs), mx-puppet-discord (see our docs) and mx-puppet-steam (see our docs).

This brings the total number of bridges supported by the playbook to 15!

Dept of Bots ๐Ÿค–

matrix-reminder-bot v0.1.0

anoa offered:

The release, v0.1.0, of matrix-reminder-bot is out! ๐ŸŽ‰

I've eliminated most of the bad bugs that were present, so will be doing some feature development for a bit. As of now, the features of the bot are:

  • Setting reminders

  • Have a reminder ping yourself or the whole room

  • Alarms which continue ringing until silenced

  • Support for end-to-end encrypted rooms

  • Postgres and SQLite support

  • Docker support

Find it here: https://github.com/anoadragon453/matrix-reminder-bot/ and join the discussion at #matrix-reminder-bot:matrix.org!

Enjoy! โค๏ธ

IPFS Bot

MTRNord offered:

Did you ever have the issue that a media event sent from someone is too large for your HS and you don't want to fiddle with the link?

IPFS Bot might be a solution. Invite @ipfs:nordgedanken.dev or Check out https://github.com/MTRNord/matrix-ipfs-bot/ to use the bot.

If you reply to any media event with !ipfs the bot will send you a link to the media stored on ipfs.

Known issues are:

  • E2EE not yet working (It joins but can't yet decrypt the related event)

  • Error handling is basically not existent. Therefore crashes might happen until I sort this out.

  • It currently does very verbose logging. This will be removed when the bot is more stable

  • Images sent from RiotX sometimes seem to not play nice with ruma

(Demo for the IPFS Bot): https://ipfs.nordgedanken.dev/ipfs/QmSfde3V4QL1Lv96Ar62qgnhaEtyi9jzPkKRCBMh4Wqm6F?filename=2020-06-27_16-41-09.mp4

We could include this video here, but it seems me appropriate to link to an actual IPFS location.

cody, REPL for your Matrix chat rooms

carl offered:

Hello, I am announcing my first matrix bot - cody - that will evaluate code snippets in your Matrix rooms and return the result. Here is an example interaction:


user> !py "Hello world!"
cody> 'Hello world!'

user> !py list(range(10))
cody> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

You can chat with him @cody:bordum.dk and view the source code at https://gitlab.com/carlbordum/matrix-cody

This initial release only supports Python, but the plan is to add support for more languages in the next few weeks. The repo might also be of interest to some of you as it has CI, CD to DockerHub, complete dev environment with cody, pantalaimon, synapse and riot using docker-compose, simple metrics and Grafana-dashboards-as-code.

Dept of Interesting Projects ๐Ÿ›ฐ๏ธ

Matrix Notepad Version v0.2.2

KB1RD told us:

A real-time collaborative text editor using the Matrix protocol.

matrix-notepad.kb1rd.net

Nope, it's not dead.

  • New version of logootish-js with a completely new algorithm

    • In particular, I should note that this new algorithm is tested extensively, so I think the bugs should be out
  • Corresponding updates to internal event structure

  • Fixed UI & CSS bugs

  • Improved UX for room title editor

  • Currently, conflicting text will be displayed, but conflicts will not be indicated in any way

  • I almost forgot to mention: The room list is now filtered using the typed rooms MSC (event ID org.matrix.msc1840). #test-document0:kb1rd.net is a room with that state event set.

I also made a flame graph of the internal algorithm and I'm surprised by some of the results. The good thing is that I think there's quite a few ways to speed up the algorithm. Here it is:

https://logootish-js.matrix-notepad.kb1rd.net/flamegraph/test/listmodel-nc.perf.js/flamegraph.html#{%22merged%22:false,%22nodeId%22:null,%22excludeTypes%22:[%22cpp%22,%22regexp%22,%22v8%22,%22native%22,%22init%22,%22core%22]}

2020-07-03-SmuSp-image.png

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. Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1fairydust.space385
2talk.go7box.xyz502.5
3gottliebtfreitag.de524
4phys.ethz.ch552
5eisfunke.com997
6c.mau.dev1422
7halogen.city1613
8nzbr.de1722
9asra.gr1774
10utzutzutz.net1875

That's all I know ๐Ÿ

See you first thing tomorrow morning, and be sure to stop by #twim:matrix.org with your updates!