This week in Matrix, William tells us about the State Compressor he wrote during his internship to reduce the size of Synapse's database, and so much more. William being a former intern of the backend team, who else than his mentor Brendan could lead the interview?
Hello! It is not-anoa here with the spec update this week, which unfortunately means no pretty graph of MSCs (sorry). I do however have some curated updates to the spec for you:
Though WIP, both are exciting steps towards much larger goals - looking forward to see how they progress! We also saw FCP finish on MSC3231: Token authenticated registration, part of Callum's GSOC project this summer - congratulations! MSC2918: Refresh tokens also finished FCP this week, making it a good time for clients to consider that access tokens might expire or appear in a different format in upcoming versions of the spec. MSC2582: Remove mimetype from EncryptedFile object was also merged to the spec - thanks Sorunome for finding the duplicated field which was duplicated!
Behind the scenes, the Spec Core Team (SCT) has been thinking about how we can release the spec as we've been talking about doing so for months. We're declaring a bit of a freeze on new things entering the spec for the time being, but that doesn't stop MSCs from completing FCP or being opened - they just might miss the v1.1 cut (sorry). Most of the work needed to release is deployment stuff rather than Matrix stuff, so the hope is is we can get it all worked out soon.
I don't have the random MSC script on hand, but I do have access to the MSC list and found WIP: MSC3030: Jump to date API endpoint. It's listed as work in progress, but is one of the MSCs I personally look forward to being accepted in time!
That's all for spec this week. I'm not sure about next week, but you might be stuck with me again. Maybe I can find those fancy graph tools in time...
Thanks a lot not-anoa, that was a great spec update!
Lots of work in preparation for Synapse 1.44 which is due out next week. Notably, we've found a few small regressions in rc1, so expect another release candidate on Monday followed by a formal release on Tuesday or Wednesday.
I look forward to telling you all about that, and our plans for Q4, next week. 🙂
Now that's some teasing! I can't wait for next week!
Hey folks, it's been a while since we released changes to the Slack bridge but here we are on our next RC. This one includes a few new things, most notably:
The bridge now automatically invites users to private rooms if there is a message and they are not joined. (#613)
Update bridge to matrix-appservice-bridge 3.1.0 (#614)
Also, a PSA: If you were struggling to bridge your rooms to matrix while using the matrix.org bridge, this should now be fixed. An update made to the Slack APIs silently broke the oauth flow, which has since been fixed. This was a misconfiguration-gone-unnoticed in our Slack app configuration, so self hosters don't need to upgrade. The details are in https://github.com/matrix-org/matrix-appservice-slack/issues/617#issuecomment-932047990
Dept of Clients 📱
Nheko
Nheko is a desktop client using Qt and C++17. It supports E2EE and intends to be full featured and nice to look at
While I am a bit busy at the moment, Nheko is getting a lot of valuable smaller contributions:
Updated the emoji pickers to Unicode 14, so that you can properly troll people.
Pasting images should now work properly again on Windows and macOS, including pasting SVGs!
The help and version command line parameters now work properly, even if an instance of Nheko is already running.
There has also been a lot of progress on the translations! We just cracked 50% translated, but since that includes a lot of languages with only a few percent, this is actually much more than it sounds! We actually have 8 languages with over 90% translations now. If you speak one of the languages at 70% or so, any help translating the remaining bits is very much appreciated. You can easily translate without an account here: https://weblate.nheko.im/projects/nheko/nheko-master/#translations If you want to translate without having to rely on the upvote mechanism, feel free to ask for translation permissions directly in #nheko:nheko.im. That is also the right room to ask questions about the translation process or translations themselves.
Nheko is also participating at Hacktoberfest this year. Translations done using the webinterface won't get counted for that though, you would need to submit a pull request manually for that. If you always felt like contributing to Nheko would be fun, but you had no reason to, now you can do it to let someone plant a tree for you (or get a T-shirt)!
That's all, I need to get back on my train!
Hydrogen
A minimal Matrix chat client, focused on performance, offline functionality, and broad browser support. https://github.com/vector-im/hydrogen-web/
Hydrogen saw a few bug fixes (0.2.14, 0.2.15 and 0.2.16) this week again, and also gained the possibility to recover from low-storage scenarios where the browser would clear indexedDB.
One of the bugs fixed might have caused a timeline corruption, so when you get the 0.2.16 update the history cache will be cleared and you'll notice a bit of delay as you do an initial sync again.
Aside from working on Hydrogen as a standalone app, I'm also making it easier to embedded in other projects. More info to come on that!
We've also had a priority planning this week, which spawned an updated backlog. Have a look if you're interested what can be expected next (although be aware that the backlog has proven volatile in the past 🙂).
Hydrogen embedded! I'm looking forward to that. Great work Bruno!
Element Clients
Delight team
Released spaces out of Beta on Web and Android..!
Following through on the beta release of Spaces - fixing more bugs and polishing on all platforms.
Web
Released Element Web 1.9.0 with Spaces enabled
Threads
Working with the Synapse team to work out what backend support will be required for threads
Steadily improving the UI
Added the ability to expand truncated quotes in replies
Cross-signing bug fixes
iOS
We refrained from releasing 1.6.0 to the App Store because of regression issues reported by TestFlight users. Huge thanks for that!
1.6.1 (Spaces and URLs preview) with all the bug fixes is being reviewed by Apple. It should be on the App Store on Monday
The implementation of user mentions in the composer has started (in SwiftUI!)
Last message types displayed in room lists have been aligned with other platforms
Tweaks to URL Previews and Contacts Access
New app navigation code architecture is coming. It will be possible soon to navigate through permalinks without losing rooms previously visited
RoomSummary storage in CoreData is still in progress
Android
Element Android is now in the 500k - 1M downloads category on the PlayStore!
Element Android 1.3.1 has been released on Thursday on the PlayStore
Now we are working on fixing issues, improving performance, and upgrading some important libraries.
The Presence support has made good progress too, it will maybe be merged for the next release.
After 4 years, matrix-email-bot finally got an update. Now at v2, the bot has been rewritten using TypeScript and matrix-bot-sdk (farewell, js-sdk from 2017). It still requires manual setup and the behaviour overall should be the same as before, though the amount of testing is somewhat minimal - please complain in #email:t2bot.io if something goes wrong.
The bot also now supports encrypted rooms out of the box, including on the t2bot.io instance. Check out t2bot.io/emailbot for information on how to get the bot set up in your room.
The full changelog is available on the repo: https://github.com/t2bot/matrix-email-bot/releases/tag/v2.0.0
Useful to watch a security mailing-list from the comfort of a Matrix room!
An (unofficial) Matrix server by and for the Newgrounds community.
This is a Matrix server with membership restricted to Newgrounds Supporters. Newgrounds is an independent arts & entertainment site that has been around for over 20 years, and I felt that its spirit of independence is a perfect match with the openness of Matrix!
The most notable feature of the server is comment rooms for Newgrounds submissions. Unlike other content-sharing sites, Newgrounds submissions don't have comment sections, but review sections, which let you post a single comment (and optional rating) for a submission. This encourages reviews to be focused on providing constructive feedback instead of being a place for off-topic discussions. With that said, open comment systems are nice too, so this Matrix server provides it! Simply visit #portal_view_SUBMISSION_ID:ngmvs.one to view!
These comment rooms are world-visible, but (at least for the time being) only Newgrounds Supporters may join these rooms & post comments in them.
To help along with this, I made a Firefox extension to make joining these rooms a breeze: NG MVSX. Simply view a Newgrounds submission page, and click on the icon that appears in your URL bar!
Code for all components is open-sourced on GitLab.
This is all very new, so things might break! If they do, tell me in #ngmvs-public-discussion:ngmvs.one
Hi folks, I've been let loose on more spec things: This time I'm looking at synthetic events. The goal with this proposal is to give appservices more visibility over the innards and actions of a homeserver. When a user registers, we want an appservice to know (perhaps to send them a little greeting, or to provision some resources) or perhaps you want to clear up bridge resources when the user deactivates their account.
The hope with this proposal is that it's going to set the foundations for services to be able to hook into and provide richer functionality based upon user actions outside of rooms. It might sound a little dry right now, but eventually I'm hoping this can be extended in lots of ways and potentially do away with per-implementation modules, instead writing services that work with all homeservers.
Please give the proposal some love/feedback :)
When asked if that was a specification change he drafted because of limitations faced when trying to implement a bridge, he said:
Yeah, so it's something I've been plotting for a while, but internally we wanted the ability to "act" based upon signups to a homeserver i.e. sending a welcome. In the past this has been implemented client-side in Element, but that has obvious caveats.
The traditional response has usually been to write a Synapse module, but I wanted to do something that could be used on other homeserver implementations and also not have to have it co-located with the homeserver, so the natural home for this kind of logic was appservices.
There are other things there too like logouts / deactivations which are good for erasing data on a service too. Generally I'm hoping it can be extended further once it's stable, for other use cases too
Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://spec.matrix.org/unstable/proposals.
MSC3401 (Native Group Voip Signalling) has been receiving positive feedback over the course of the week. The MSC spells out how one would go about implementing native, decentralised group voice and video calls over Matrix without the need for a third-party service. This is the next step forward after the full-mesh group signalling work, as demoed in previous editions of TWIM, lands. Quite exciting stuff!
Otherwise there was another Spec Core Team retro this week. Discussion focused mainly on how to handle event types that not every implementation using Matrix may need (think pinned messages and how that might not be very useful for IoT networks...). Watch this space!
This is actually already implemented and enabled by default in Synapse, believe it or not. But no clients have support for it yet (there is an outstanding matrix-react-sdk PR...).
This is a pretty cool feature in my opinion, any client want to be the first?
MSC3401 looks like there's a lot of work going on on the native VoIP side. I can't wait to see what the future holds!
This week we released Synapse 1.43! This mainly contains internal changes, including those in preparation for Spaces leaving beta, but it's worth calling out that this version of Synapse now uses the MSC3244: room version capabilities API to ask clients to prefer room version 9 when creating restricted rooms.
Support for room version 9 was introduced in Synapse 1.42, so we'd strongly encourage administrators to upgrade.
Perhaps more notably for Synapse developers, we've spent quite a lot of time over the past few weeks improving the SyTest suite of integration tests. Several of the tests had race conditions which would cause them to occasionally fail when testing a multi-worker deployment of Synapse. These flakey tests have plagued our continuous integration pipelines, and are finally being fixed.
The long term plan is still to transition to Complement (written in Go) and away from SyTest (written in Perl), but we still need to ensure that SyTest is reliable in the meantime.
etke.cc now offers hosting options (and some more stuff)
Hi there,
Didn't post updates about the etke.cc service for a while. If somebody not familiar - we setup and maintain matrix servers (based on awesome spantaleev/matrix-docker-ansible-deploy)... and setup VPN... and DNS recursive resolver, and... AND!!!! Provide hosting, yes. So, starting today that's available for everyone (we offer it for some time in "well, you know, we don't provide hosting, but if you want it so hard..." way and it works good)
Even with that update (literally the most requested thing, was in every third order we got), provided hosting considered as your own server, the only difference that you don't pay hosting provider directly, but through us. So, you get root access to the server and we treat it as any other customer's infrastructure
Join #announcements:etke.cc room and say hello in #discussion:etke.cc
Heisenbridge is a bouncer-style Matrix IRC bridge.
Release v1.2.0 🥳
Message formatting (from HTML to text) has been drastically improved
CTCP replies are now shown correctly but still ignored
Mentions/pills always honor room nick
Plumb notices don't loop around anymore
Self replies don't prefix with own nick
Single line truncation works when max lines is 1
Multiple fixes to displaynames or messages containing control characters leaking to IRC
New dependency: mautrix-python
Minimum Python version requirement has been bumped to 3.7
I've also started releasing source archives as GitHub releases for distribution packagers and the project is published to PyPI to have more installation options.
What improvements did hifi bring to the formatting you may ask? I asked, and hifi answered:
the fallbacks are inconsistent and usually are markdown which is a lie 😅
replies and mentions are completely all over the place in the fallback in addition to being markdown
the unformatted html is now something in between and doesn't do code blocks at all because those ticks are just noise on irc
it tries to look like more that you pasted long text rather than sending markdown
That's very considerate for IRC user, thanks hifi!
Dept of Clients 📱
FluffyChat 0.41.0 has been released
FluffyChat is the cutest cross-platform matrix client. It is available for Android, iOS, Web and Desktop.
After 2+ years of development, Quaternion makes a leap from 0.0.9.4 all the way to 0.0.95. The release notes list some key improvements: reactions, Markdown, revamped timeline, user profile dialog and a lot of other things. It’s the same small and fast client that blends nicely into your desktop environment, it just got much better. Go and get it!
Congrats on the release, kitsune!
Element Clients
Delight team
We’re testing & polishing Spaces, releasing them out of beta in the upcoming release cycle next week!
On iOS
We’re anticipating some performance issues on a very small number of accounts which participate in a very large number of rooms. After trying the next release, if this affects you, please let us know as it’ll help inform whether we cut an off-cycle hotfix or prep changes for the next release.
iOS doesn’t support pagination in the Space Summary API yet, so will only return the first 50 rooms in large Spaces when browsing. Support for this is planned for the following release.
Web
Released Element Web 1.8.6 RC2.
Fixing bugs and cosmetic issues with our Threads feature, currently in Labs.
Cross-signing bug fixes.
This week we Ran our first community testing session on 1.8.6 with members of the community. We were very pleased with how this went and intend to continue the sessions. You can help making Element even better by participating in our fortnightly testing sessions. Join #element-community-testing:matrix.org, and learn how to make the most useful feedback
iOS
The RC 1.6.0 with spaces is being reviewed by Apple
Element iOS requires now iOS 12.1 minimum
URL preview and voice message refinements
SwiftUI templates have been merged
Android
The RC 1.3.0, with Spaces, will be prepared today.
We have started to work on Presence
We are still working to improve the overall performance of the application and the SDK
Also we are doing lots of maintenance on the whole code base, and we are improving the CI.
Hydrogen
A minimal Matrix chat client, focused on performance, offline functionality, and broad browser support. https://github.com/vector-im/hydrogen-web/
A little synadm release went out this week. Thanks a lot to @govynnus for contributing "Registration token management", it's available as a new subcommand regtok. Also some tiny improvements here and there were brought in to make admin experience even more convenient.
Have a look at the release notes: https://github.com/JOJ0/synadm/releases
Ansible Contributor Summit 2021.09 is happening next week! It will be held over 2 days, on Tuesday September 28 and Friday October 1, from 13:00-21:00 UTC, and will be held on the Matrix platform.
The Ansible Community has recently adopted Matrix as an official chat platform and this is our first Matrix-powered conference. Feedback welcome! You will need a Matrix account to participate in the conversations. For more information, please see Communication - Real-time chat and the Ansible Community Matrix FAQ.
there's a mix of stuff going on to try out, we have hack sessions on Tues that may use the embedded Jitsi etc, and talks on Friday that will be more presenter/spectator
It's exciting to see an organisation holding an online conference on Matrix!
Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://spec.matrix.org/unstable/proposals.
If MSC2918 above is giving you feelings of déjà vu, don't worry. It already had FCP proposed, but due to a resolved concern being incorrectly processed by mscbot on github, a new FCP proposal was carried out.
In other news, MSC3381 (Polls - mk II) receive a fair amount of attention this week. It implements inline polls via a new m.poll type and makes use of the concept of extensible events. Do check it out if you're interested in voting through means other than message reactions!
Otherwise Alexandre Franke and myself will be looking at cleaning up the CI of the matrix-org/matrix-doc repo next week, as well as continue to move the infrastructure for the new spec release forwards.
This one is entirely new to me, and has some slight overlap with some work for MSC2762: Allowing widgets to send/receive events, where we were thinking about how a widget could act as a calendar using Matrix rooms and events as a calendar backend.
The Synapse team is busy gearing up for 1.43.0 next week, which will make room version 9 the default for newly created restricted rooms, among other things.
We've also been doing quite a lot of work on Sydent. Notably, last week's 2.4.0 release introduced a few regressions which have been resolved in subsequent point releases. The one-shot case folding migration script for Sydent is still performing unexpectedly slowly; look for that to be resolved soon.
As the end of the year approaches, now is a good time to ensure you're ready for the deprecation of PostgreSQL 9.6 (November) and Python 3.6 (December). Do you have plans to upgrade to Pg 10 and Py 3.7 or newer? If not, there's no time like the present! 🗓
Lastly, Hacktoberfest 2021 is less than two weeks away! Many Matrix projects intend to participate, including Synapse.
With rooms version 9 as the default, it feels like Spaces are trying hard to escape beta!
And yet again more Kubernetes Helm Chart updates this week, with element-web being bumped first to 1.8.4 and then 1.8.5. More improvements for the new ingress object in K8s 1.19 also landed.
Dept of Bridges 🌉
Heisenbridge
Heisenbridge is a bouncer-style Matrix IRC bridge.
mautrix-hangouts has turned into mautrix-googlechat. It's still in alpha stage, but text messages work in both directions, media from google chat works and threads from google chat are bridged as replies.
Dept of Clients 📱
Cinny v1.3.0: Initial Space support and notifications
Released 0.2.9 & 0.2.10 this week with the main thing being improvements in preventing scroll jumps when resizing or loading more content in the timeline. Not 100% of scroll jumps will be solved with this release, but it should be improved a lot. Please report any issues you may encounter in this area! There were also a few bugs fixed, see the linked release notes. Try it out at hydrogen.element.io!
Beeper is a unified chat app built on top of Matrix. We've created 10+ open source Matrix bridges and integrated them into an easy to use all-in-one service which does not require setting up your own homeserver. You can learn more at beeper.com.
We've been hard at work for the last few weeks and have a number of updates we'd like to share across all our clients and bridges.
New verification flow for Desktop, Android, and iOS! Logging in and verifying your session is now super easy to do. This is extra important for Beeper because we enable secure backup by default and require all users to set up a security key.
Desktop
Added the ability to view your rooms using our Smart Inbox that places the most important messages at the top, or with Classic which leaves the room in a reverse chronological order.
You can now select network by network which messages should appear in your inbox using our Inbox Filtering feature
We now have beta support for Custom CSS theming! Check out some of the themes that have already been made by the community. https://gitlab.com/beeper/beeper-themes
Previously we only supported DMs for Discord out of the box, but now you can pick and choose which Discord servers to sync into Beeper
iOS
A complete beautiful rewrite of the Room List using SwiftUI. The room list now looks much more native to iOS, while still feeling like Beeper.
Android
Redesigned room list: we started a redesign of our Android app and adopted the Material design language.
Integrated Android SMS bridge: Our previous Android Messages bridge was built on a shakey puppeteer foundation, so we rewrote it. Our new Android SMS uses native APIs to send/receive SMS. RCS remains elusively out of our grasp for now. We open sourced our bridge at https://gitlab.com/beeper/android-sms
Bots
Wrote a bot for managing Linear issues from Matrix: https://gitlab.com/beeper/linear-maubot
Wrote a bot to mirror chats into Chatwoot (an open source Intercom-like customer support platform): https://gitlab.com/beeper/chatwoot
Hiring
We are hiring! Come join many other Matrix community members who have joined the Beeper team including @tulir:maunium.net, @annie:beeper.com, @kilian:beeper.com, @spiritcroc:beeper.com and @sumner:beeper.com (who replied to our last TWIM job post and got a job at Beeper within a week!)
We are hiring senior iOS, Android developers and a DevOps/SRE (preferably in North/South America timezone)
Nheko got a lot more colorful this week. red_sky (nheko.im) and LorenDB finished up the jdenticon support. This means instead of the first character of a users display name, you now have the option to see a colorful avatar for users without an explicit avatar. You may have seen something similar on Github and other platforms. Currently this needs the qt-jdenticon plugin, which is a bit troublesome to install correctly, but we should improve that in the near future.
Prezu added a homeserver entry field to the room directory, making it much more useful (no history yet though). Thulinma added a /goto command to navigate to specific events or room and fixed scrolling to a specific event (in the past it only approximately scrolled to the right location). Symphorien added the Alt+A shortcut to navigate between rooms with active mentions and notifications. Additionally Priit completed the Estonian translation.
Additionally we released a security fix on Monday (together with a few other clients). We only released a fix for the master branch in Nheko instead of also the latest stable release. This confused a few people, but I hope my explanations made sense. The gist of it is:
On the master branch the local homeserver admin could force Nheko to forget which identity keys it saw for a user and as such insert a new device with the same device id, but attacker controlled identity keys and request old encryption keys from Nheko. In Nheko's case we had some protections against that, but if the server sent a device_list.left event for that user, Nheko would delete those protections. From our understanding this could not be abused over federation.
On 0.8.2 this can also be abused, but 0.8.2 does not implement key sharing completely. It can only forward the currently in use encryption key, not historical ones. As such the impact in our opinion was too limited to release a security fix. 0.8.2 does not allow you to send encrypted messages only to verified devices as such the homeserver admin could always insert just a different device to get access to new encrypted messages. Because of that we have a big warning in the README and when enabling encryption in 0.8.2, that one should not rely on the security of the E2EE implementation in it. We are aiming to have stable and secure E2EE in the next release (and so far it is looking good), but if you are using 0.8.2 I can only repeat, that it won't protect you from an attacker even without the disclosed security issue.
I hope this clears up some of the confusion. Feel free to visit us in #nheko:nheko.im and tell me, that I am wrong.
Element Clients
Delight team
Testing and polishing of Spaces.
Web
Released Element Web 1.8.4, with an important security fix
Released Element Web 1.8.5.
Improvements to replies.
Continuing discovery of threads.
Cross-signing bug fixes.
We’re going to involve the community in testing the product. More details to come early next week if you want to lend a hand!
iOS
Made another Release candidate 1.5.4 because of reported regressions. It will be available on the app store on Monday
URL preview moved out from LABS
New screen templates with SwiftUI, mocked data, unit and UI tests are almost there
There was a new version of OLMKit with the support of fallback keys
The crypto part of the SDK now support fallback keys, key backup cross-signing and device dehydration
Android
Released Element Android 1.2.2, with an important security fix
Working on improving the build time and the dependency management
Investigated performance issue on incremental sync
This week saw two releases of libolm, a library that implements olm, megolm, and some other Matrix-related encryption functions. The main changes in version 3.2.5 are new functions for getting error codes rather than error strings so that implementations don't need to rely on string parsing to decode errors, and added support for fallback keys in the Android and iOS bindings. There were also improvements in error handling in the unpickling functions, and the shared library no longer exports certain private symbols, which caused problems when those same symbols were exported by other libraries. The initial implementation of this last change caused build failures in some environments, so version 3.2.6 was released to fix this.
Polyjuice is a collection of Matrix libraries in Elixir.
Polyjuice 🧙
A few from the wizarding world this week.
The Polyjuice project wades further into bad pun territory with a new project: Polyjuice Draughts, a set of checkers to verify that a homeserver is set up correctly and is accessible for clients and federation. It is similar in goal to the Matrix Federation Tester, but also checks client connections. It can either be run from the command line, or it can be used in a Matrix room, thanks to Igor, by sending a message of the form !servertest <servername> in a room that has an appropriately-configured bot in it. There is currently a bot in #synapse:matrix.org that can be used.
As you can see from the screenshot, my server isn't quite set up correctly, and I should fix it some day...
Polyjuice Client 0.4.3 has been released. This release adds functions for getting room membership (thanks to multi prise) and checking the server spec versions, along with some bug fixes.
Finally, the Polyjuice libraries have moved their git repositories from https://gitlab.com/uhoreg to https://gitlab.com/polyjuice. The old locations should automatically redirect to the new locations.
I have converted the script for auto updating the Element-web instance to latest version from Gist to the full Git repo MurzNN/element-web-update and added support for .env file to set desired variables.
This is a bash script that checks the new released version of Element from official Github repo and if it differs from installed - updates the local files with deleting old version (to cleanup old files) and unpacking new one, but with keeping the config files by mask config*.json.
You can put it to your crontab.daily and got an always fresh Element with forgetting about manual update routine.
I created a bot to assist with sending standup posts to a room. It reminds you to write a standup post, and then asks you what you did the previous day, what you intend to do today, if you have any blockers, and if you have any other notes. Then it posts a nicely formatted standup post to a room which you can configure.
You can find the source code here: https://sr.ht/~sumner/standupbot/
Are you in Berlin 🐻🇩🇪? Why not join us on Tuesday evening at 7:30 PM for a beer or two while chatting about Matrix development and hosting. We're going to meet at Schoenbrunn. This is a small 3G (self-tests are ok) event in an outdoor beer garden.
I am super happy to finally give you another update on TheBoard, due to holidays during the last weeks I had less time to work on TheBoard. But now there still accumulated enough changes for a little Update:
I experimented what technologies I could use for the still required GUI elements. A new User List was implemented using Vue.js. Vue seemed to be a little overkill for the kind of GUI required in the case of TheBoard. So I re-implemented the user list with react-no-js.
I am happy with react-no-js and it is used for a user list plus a tool settings menu on the right hand side of the canvas.
The tool panel in particular opens up a lot of possibilities. The eraser already makes use of it by giving the option to only delete specific item types (Image, stroke or text). This can be very handy if you want to delete strokes drawn on top of an image without deleting the image as well. What can be deleted is highlighted by a new filter system which allows to make any modification to objects selected by a filter function (see the attached image)
Other small changes:
Animated camera movement (for a upcoming "follow other user" feature) currently used for the Go Home Button
Opening a board now loads at the last edited location
The touchscreen navigation (zoom/pan) was re-implemented and should now work much better
Links and further reading:
Play with it at: https://toger5.github.io/TheBoard/ (feel free to join: https://matrix.to/#/#PublicWhiteboardTest_TheBoard:matrix.org with the account used for testing to join the first collaborative board)
Join the matrix room: https://matrix.to/#/#TheBoard:matrix.org
The Board is very exciting! I could see in the planned use cases that Timo already intends to make a widget out of it. It would be very useful for real-time collaboration, but that's not all! When asked if a standalone app will come, Timo confirmed:
Indeed. I wasn't thinking about a builtin home-server yet. But a standalone app is still planned because I want the app to be able to manage different boards. Therefore I need to be able to control room creation and listing rooms. It should basically feel like onenote if you intend to use it like that.
@s7evink The game is called AAGRINDER, hosted at aagrinder.xyz, the code is here, the bridge implementation is here, wiki is here. The game is a text-based sandbox multiplayer browser game that I (Maze) have been building for the past 3 years. Built from nothing, no game engine. It generates an infinite procedural terrain to venture in. The integrated chatbox is nothing special but it's really nice to have it bridged to Matrix now, it's less lonely when playing alone. The appservice bridge creates users matching player name and color. Display names from Matrix are presented in the same color as in Element.
Hopefully you're able to extract some useful information out of this ^^
I love the retro vibe of the game, it's really cool!
Third Room is an experimental metaverse client I've been working on for the past couple weeks. It combines three.js and Matrix to create 3D voice chat rooms where you embody an avatar.
There's a lot more info in my talk from last night at the Open Metaverse Interoperability Demo Night (my talk starts at 37:43)
The future is now, I'm really thrilled about Third Room!
Final Thoughts 💭
Beeper mentioned they have several positions open, and Element is also talents hungry. I’m particularly ecstatic to see that developing skills around Matrix can get people jobs. Of course I encourage strongly people to experiment with the protocol and use it in all sorts of crazy ways!
Dept of Ping 🏓
Here we reveal, rank, and applaud the homeservers with the lowest ping, as measured by pingbot, a maubot that you can host on your own server.
Chatting with Manu about iOS, Mobile, team growth and more. See video description for agenda!
Dept of Status of Matrix 🌡️
Incoming security fix
As just blogged there is an important security fix coming for several Matrix clients. More news, and patched versions will be announced on Monday. Though there is no evidence this vulnerability has been exploited, please be ready to upgrade on Monday.
Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://spec.matrix.org/unstable/proposals.
I'm actually surprised myself that this wasn't part of the spec already! Looks like it would be a nice to-do to get this implemented and then checked off by approvers. Anyone want to submit some PRs to HS and AS implementations? 🙂
Dimension, an integration manager alternative for Element, got a refresh from @TimeWalker to bring the project up to modern day standards. Please give it a go if you've been running Dimension, and report bugs if there's problems! While I haven't personally had time to maintain it as much as I'd like, it's great to see people taking on 3 year old bad code and fixing it 😄
For TWIM readers, Dimension is an "integration manager" that replaces the default one shipped with Element. It's not entirely mobile-ready yet, but does give a user interface for managing various bots, bridges, and widgets. In practice, an integration manager isn't needed as most bots and bridges (and even widgets) can be set up without an integrations manager, like all of https://t2bot.io/ (ironically, given Dimension was originally targeted at t2bot.io). People do still use it though to configure self-hosted platforms with their very own Element, Synapse, bridges, and bots.
While I still probably won't have much time personally to maintain it, PRs are certainly accepted. Dimension is a bit complex to work within and test, but people in #dimension:t2bot.io should be able to help out.
Synapse 1.42.0 is out now! This release includes support for Room Version 9, which fixes an issue with Version 8's support for restricted rooms. We also implement a bunch of new MSCs (including MSC3231: Token authenticated registration by Callum Brown as part of his Google Summer of Code project), improve efficiency, and sidestep a longstanding issue with users getting stuck in unsupported room versions. Read the announcement for details!
This Sydent release also includes support for Jinja2 templating, a complete overhaul of our CI/CD pipeline, and a comprehensive update to the codebase to follow modern Python practices including the addition of mypy type hints throughout.
Lastly, we'd like to welcome Shay to the Backend Team at Element. Her work as an Outreachy intern paved the way for the recent improvements to Sygnal and Sydent. Thanks, Shay, and welcome aboard!
And another week, another Kubernetes Helm Chart update, this time seeing matrix-synapse updated to 1.42.0 - as well as a whole lot of fixes to support the new ingress object version introduced in Kubernetes 1.19
Hi folks, we're massively pleased to announce the third major release of the TS/JS bridging library matrix-appservice-bridge. This release contains several large breaking changes to the previous way of life, most notably we have stopped using the matrix-js-sdk for most of our code, instead using the matrix-bot-sdk (Hi TravisR , we see you up there!).
There are several reasons why we went this way:
Notably, this library focuses work on simply implementing APIs and bridge/bot logic. There is no additional cruft to support client use-cases or browsers.
It's historically had a brilliant coverage of the CS and AS APIs, and has been extremely flexible to add new stable and unstable APIs to it.
At the start of this project, it was the only library with a complete Typescript coverage. Typescript types continue to be extremely useful to us.
We're hoping to make use of the upcoming encrypted appservices support, to replace the slightly janky pantalaimon support the bridge library currently uses.
Thanks to Travis and the matrix.org bridge team for working through these changes!
There are a bunch of common sense improvements that break API compatibility in this release also, so please be sure to check them out and update. We don't anticipate supporting 2.X except for extreme circumstances.
Finally, we'll be updating the matrix-org suite of bridges over the coming weeks so please watch for bugs and let us know how we're doing!
SchildiChat is a fork of Element that focuses on UI changes such as message bubbles and a unified chat list for both direct messages and groups, which is a more familiar approach to users of other popular instant messengers.
After a couple of weeks/months of internal testing and public beta testing, the latest stable version (1.2.0.sc42) now supports UnifiedPush!
This means that you can now choose your own push provider, if you do not want to use Google's FCM push notifications.
Huge thanks to @sim_g:matrix.org for working on this!
Nheko
Nheko is a desktop client using Qt and C++17. It supports E2EE and intends to be full featured and nice to look at
You might remember my short story from last TWIM about the race between different translators? Seems like that one was good enough to motivate a few people to contribute translations. While those don't seem to be 100% complete yet, we saw a significant jump in translation percentages (especially Portuguese), so thank you to everyone who contributed to that!
Thulinma also made the whole userprofile scrollable, which improves the experience on small screens a lot. He also implemented message deduplication by event id, which is required by the spec to be done on the client side. This fixes a lot of duplicates when using conduit and your join event appearing 2~3 times on synapse.
We also fixed an issue with how different homeservers update one time key counts and added some additional code to remove old one time keys, if we ever uploaded to many (which might have happened in the past in a few edge cases). We also now escape img tags in usernames correctly in more places, redundant date separators when paginating back in a room should not appear anymore and tastytea decreased the margins on blockquotes, so that they look less jarring and take up less space.
The biggest news is that multi-account support landed in fractal-next (don’t be fooled by the title of the MR, it’s more than just a widget!). I feel like this is one of the most requested features across all clients, yet not many have it yet, and I’m ecstatic that we’re joining them 🎉. This work was done as part of GSoC by Alejandro under the mentorship of Julian 👏.
Element Android 1.2.1 has been release to the beta channel of the PlayStore and should be push on production on next Monday. It includes improvement for the Spaces (still in beta) and improvement for the VoIP. Full changelog can be found here: https://github.com/vector-im/element-android/releases/tag/v1.2.1
v0.6.0-beta.2 has been published of matrix-bot-sdk as an early version to support encryption on bots and improvements to appservices. It's a bit self-directed to figure out how it works, but #matrix-bot-sdk:t2bot.io is available to try and help out.
Please give it a go and report bugs. The final v0.6.0 release is expected to contain not only encryption support for bots, but also appservices and real documentation. For now though, it's just the bots.
It's an "automation backend" bot of etke.cc and has following features:
send html forms from your website directly to matrix
manage matrix-registration invite tokens in matrix chat
Miounne hits first stable release. I already shared some info about it here some time ago... but now it's stable! Source code has 83+% of unit tests coverage and some bizarre bug have been fixed.
Besides, now you can use pinned version of the bot (docker registry)
PS: we have #miounne:etke.cc room to discuss (whine) and post updates about it
Patience, a full stack integration testing approach for Matrix clients and servers, has added initial support for Hydrogen this week. As it already supported Element Web, we now have a (basic) system for testing multiple clients together which is taking shape! 🥳 From here, we plan to add configuration options to express the permutations of clients you want to test together.
This project is still in its early stages, but we hope to eventually have support for many different clients and then use it to test common flows like user verification, which can differ quite a lot across clients. If you're interested in this topic, feel free to join the new #matrix-patience:matrix.org room.
Final Thoughts 💭
Someone has been making Matrix fanfic! I'm not sure how federation ties in, and for some reason they feature rubber duck debugging at one point but otherwise it looks fun :) https://www.youtube.com/watch?v=9ix7TUGVYIo
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.
We forgot to mention that Doug is also the creator of Watch the Matrix! https://github.com/pixlwave/Watch-The-Matrix This allows you to use your Apple Watch as a native client (rather than through another iDevice)
These fellows all recently started to work for Element, and (claim!) to enjoy it. Element are HIRING, so if YOU think think you'd like to apply, check out https://apply.workable.com/elementio/ for current listings and details of how to apply.
Dept of Status of Matrix 🌡️
Conduit Beta released
Conduit is a Matrix homeserver written in Rust https://conduit.rs
We finally did it! We released Conduit Beta: https://conduit.rs/release-0-2-0, we even made it to the Hacker News frontpage: https://news.ycombinator.com/front?day=2021-09-02
This is huge news for us and hopefully we will see a lot more Conduit instances pop up in the near future.
Thanks everyone!
Congratulations to Timo and the gang, you're making superb progress!
Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://spec.matrix.org/unstable/proposals.
You may be wondering: what's up with all of these abandoned MSCs?? The answer is that the matrix-org/matrix-doc repo changed its base branch to main to help preserve the git history since the spec website rewrite. In doing so, all PRs were automatically updated to the new base branch by github... except those that were coming from deleted users and repos. Those ones were simply closed!
But as they seemed to be have been effectively abandoned by their authors, it was more of a cleanup than an accident. However, if your MSC was affected by this change and you would like to continue it, please contact someone in the #matrix-spec-office:matrix.org and we'll help you out.
MSC2448 defines a way for clients to include a "blurhash", or a short, textual representation of a blurred version of an image, inside events which other clients can show while waiting for thumbnails to download from media servers. This replaces the potentially blank space while an image's thumbnail is loading with a (IMO) beautiful alternative!
Yes I wrote this MSC... but I swear it's what the script picked! We do not question the script!!
Synapse 1.41.1 is out and it contains patches for two security vulnerabilities which could inappropriately disclose private room metadata to unauthorized users on a participating homeserver. Please upgrade.
Room Version 9 is coming in Synapse 1.42 next week. This version fixes an oversight in which event fields are protected from redaction in room version 8, making it possible for restricted rooms to break if a join event is redacted. Because event IDs are based on the redaction algorithm, we can't fix this without creating a new room version.
In the interest of compatibility across the federation, Synapse 1.42 will still instruct clients to create restricted rooms using room version 8. Synapse 1.43, scheduled for release on 21 September, will begin instructing clients to use room version 9 instead.
Hey folks! I had some spare time today so I've invested it into the matrix-github bridge. The latest work is GitHub discussions support. It's still needs a bit more testing / minor feature implementation, but I leave you with a screenshot below of how it currently integrates spaces!
Dept of Clients 📱
Nheko
Nheko is a desktop client using Qt and C++17. It supports E2EE and intends to be full featured and nice to look at
We had a race between 3 Translators this week. All 3 of them were trying really hard, so in my opinion every placement is a first place, buuuuuut Thulinma actually came first by bringing the Dutch translation from 5% to 100%. A few hours later Priit came in as a close second updating the Estonian translation to 100%. ISSOtm noticed that and tried to catch up which resulted in a 3rd place finish for the French translation. Now I understand the excitement people feel watching others compete in sports without having to do anything themselves!
red_sky (nheko.im) meanwhile fought a much more difficult enemy, Apple documentation and code signing! To be honest, I expected him to be beaten, but Nheko's DMGs are now actually properly signed and notarized. So if you are on macOS, you should now see less ugly warnings when installing Nheko. All nightlies building of the master branch are signed as well as our future releases.
In more community contributions, resolritter fixed the right click menu not working on replies. So you can copy a link from a reply now by right-clicking it without having to scroll up. Thulinma fixed window alerts not working when using conduit, because Conduit does not implement the /notifications endpoint Nheko uses and he helped me debug and fix device lists not showing up when using Conduit as well as sessions always getting rotated in "Send encrypted messages to verified devices only" mode.
In our work to stabilize E2EE we also now require a proper secrets daemon running on Linux (and other platforms, but there it is always provided by the OS). This is used to store the pickle key as well as the cross-signing secrets, so that an attacker can't read the from the config file. We already used such a daemon before, but we failed silently and we didn't use it for the pickle key until now. So if this prevents you from running Nheko, please open an issue so that we can work on a solution. Those APIs can be really fickle so additional testing and feedback would help us out a lot!
Also exciting is that Nheko now supports playing encrypted audio and video files without storing a temporary unencrypted copy on disk as well as animated images like WebP and GIF! It took us a while to figure out a proper solution, but now you can send animated stickers and you will finally be able to understand why other people were lauging at still images. (We also had to fix some bugs in our sticker editor, where we didn't add the mimetype to the sticker info for that.)
Some more embarrassing news, I didn't know I was a moderator in #conduit:fachschaften.org, so I happily pinged everyone in the room while discussing room mentions. To prevent that from happening in the future, Nheko now shows a red warning above the message input if you will be pinging the whole room to give you time to reconsider. If that is not enough to stop me from doing that, we might require confirmation before sending such messages in the future, but so far this seems to work. Pinging everyone by accident can really scare you and composing a message in Matrix shouldn't be scary!
I hope I didn't forget anything and please make sure you check out Conduit, since they are doing a great job in revealing bugs in Nheko!
FluffyChat
FluffyChat is the cutest cross-platform matrix client. It is available for Android, iOS, Web and Desktop.
This release fixes a bug which makes it impossible to send images in unencrypted rooms. It also implements a complete new designed new chat page which now uses a QR code based workflow to start a new chat.
feat: Dismiss keyboard on scroll in iOS
feat: Implement QR code scanner
feat: New design for new chat page
feat: Use the stripped body for notifications and room previews
feat: Send on enter configuration for mobile devices
fix: Prefix of notification text
fix: Display space as room if it contains unread events in timeline
fix: missing null check
fix: Open matrix.to urls
fix: Padding and colors
fix: Sharing invite link
fix: Unread bubbles on iOS
fix: Sending images in unencrypted rooms
Element Clients
Updates from the teams.
Delight team
Testing and polishing of Spaces.
Web
Released Element Web 1.8.2
We’ve added an early, incomplete prototype of Threads to Labs
Bug fixes
iOS
App startup has been improved by x3 by lazy loading room messages and read receipts
Element-iOS is now iOS12 minimum. Code have been cleaned up
URL preview is still in progress but it should be available in the next release, 1.5.3
SwiftUI: There is now a target to run the Xcode project without the MatrixSDK to speedup SwiftUI preview. This is the first piece for the coming new screen templates
Android
Working on upgrading Android Gradle Plugin to 7.0.2 and other dependencies.
Set up GitHub actions and reduce the number of tasks run by Buildkite
Spaces PRs are merged one by one to develop, the feature will be available in the coming releases
Working on crypto: dehydrated devices, Olm fallback keys
This version of the simplematrixbotlib package adds the ability to send messages formatted in markdown via the bot.api.send_markdown_message() method. Example usage is shown below:
#### Respond to all messages from users with a hello world message that involves markdown formatting
import simplematrixbotlib as botlib
creds = botlib.Creds("https://home.server", "user", "pass")
bot = botlib.Bot(creds)
@bot.on_message_event
async def hello_world_md(room, message):
match = botlib.MessageMatch(room, message, bot)
markdown_message = "# Hello World from [simplematrixbotlib](https://github.com/KrazyKirby99999/simple-matrix-bot-lib)!"
if match.is_not_from_this_bot():
await bot.api.send_markdown_message(
room_id=room.room_id,
message=markdown_message)
bot.run()
Circles is a project to build a secure, end-to-end encrypted social network, using Matrix as the foundation.
News
We're getting very close to a real App Store launch. The latest beta release this week is 0.98 This version might be The One! So please, if you haven't tried Circles in a while, give this one a shot. Also please share the link with any friends and family who you think might be interested. The current signup token has plenty of slots for everyone.
If you want to see some activity in your circles, invite me to follow your Community circle and I'll invite you to follow back. I'm @cvwright:kombucha.social.
WARNING
If you've been using Circles with your own (non-Kombucha) server, you probably DO NOT WANT this version. Support for bring-your-own-server will return very soon after our App Store launch.
Latest updates
Broke and then re-enabled new account signup. Thanks to everyone who helped diagnose this one, and sorry if you were unable to sign up using a recent build.
Fixed a weeks-old bug where posting a message into a circle would then send you back to your list of all your social circles. Big thanks to Yosef for bringing this to my attention.
Fixed a bug in recent 0.9x builds where the Matrix rooms underlying circles and groups were being created with invalid encryption parameters. If you've been unable to post anything, this is the likely culprit. The fix is to update to the latest build, then delete your old circles/groups and create new ones.
We have a new icon. It's blue! I was worried that Apple might think the old icon looked too much like the Apple Photos icon.
New and improved interface for managing your account information. Added support for changing your password and for deactivating your account. I hope you never want this last one, but Apple requires it for apps that allow you to create accounts.
Removed support for Markdown formatting in posts and image captions. This is a sad one, but unfortunately the performance of the open source library that we were using for Markdown just wasn't up to the task. On the bright side, our timelines load much more quickly now, and the scrolling should be much smoother. Look for Markdown support to return with the release of iOS 15 later this year.
Another update to the Recent Activity list. Now it should refresh itself automatically if/when it initially comes up empty.
The CoMatrix project enables the usage of the Matrix protocol (more precisely Matrix Client-Server API) for constrained IoT devices via CoAP and CBOR in a constrained network (e.g. a 802.15.4/6LoWPAN network).
CoMatrix provides a gateway, which ports Matrix to CoAP/CBOR/(DTLS). This gateway communicates with constrained IoT devices on one side via CoAP+CBOR and translates to the Matrix protocol on the other side (i.e. HTTP+JSON). CoMatrix also provides a client library (for RIOT-OS) which is a starting point to implement CoMatrix clients (for constrained devices) which are able to interact with Matrix homeservers via the gateway.
Currently CoMatrix supports the following features:
I have made a small 120k pipeline-agent software (including all dependencies except NodeJS v8) which can run on multiple platforms (including OpenWRT) and takes pipeline work over the Matrix protocol. In the end it's going to be used to setup things like VPN connections between gateways.
We also have a commercial web portal almost published where one can create web apps and configure pipelines to process the results. And yes, the portal also uses Matrix as its persistent storage -- it was implemented using my Matrix CRUD Repository from last week :)
The agent software (pipeline-runner) is open source and has zero (0) runtime dependencies except NodeJS, and available from here: https://github.com/sendanor/pipeline-runner -- It's still in early development, though.
Hi everyone! Did you ever feel lost in the Matrix world? The room directory is big, but it's still hard to find something you like. Or are you a room moderator, but there is not much activity in your room because it doesn't have enough users?
This is why I want to share rooms (or spaces) I find interesting.
"Discover music through peers - Please write a small description of your discoveries. No uploads of non-free music please. For discussions and chat please visit the room's sibling #musicdiscussion:matrix.org "
Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://spec.matrix.org/unstable/proposals.
MSC2582 (Removing mimetype from EncryptedFile object) was one of those MSCs that were relatively small, but had been languishing for ages. Partly because it required client implementations to update, but also partly because one needed to go in after a while and actually confirm that all known clients had updated. @uhoreg took up the mantle on his own to do so, and as a result this MSC has hit FCP and is soon to be merged. Thank you!
Alongside MSC2957 and MSC3265, this MSC is requesting a better way of communicating one's password to the homeserver without sending it in plaintext (over TLS, hopefully).
Remember that this is only done in exchange for an access token, which is then used for all subsequent requests. Still though, I can see the merit!
Synapse 1.41.0 is out! Check the release announcement to find out about all of the details, including progress on MSCs, great new Admin APIs, and the ability to handle the /createRoom endpoint on workers. As mentioned in last week's TWiM, Synapse 1.41 uses MSC3244: Room version capabilities to tell clients that they can and should use Room Version 8 when creating restricted rooms. The future is here!
We've also stopped publishing Debian packages for Ubuntu 20.10 (Groovy).
⚠️ We expect to publish a security release Synapse 1.41.1 on Tuesday, 31 August which fixes two moderate severity issues.
Lastly, the Synapse team would like to extend a warm welcome to Sean Quah, who joined Element's backend team this week. Welcome, Sean!
This release adds more functionality for spaces, enhances the html viewer, adds a brand new video player and brings some improvements for voice messages. Thanks to everyone involved!
Please note: It will take some days until it arrives in all appstores.
All changes:
change: Nicer design for selecting items
change: Placeholder at username login field should be just username
chore: cleanup no longer used translation strings
chore: switch image_picker back to upstream
chore: update flutter_matrix_html
chore: Update matrix sdk to 0.3.1
feat: Add option to not autoplay stickers and emotes
feat: Add remove rooms to and from spaces
feat: Add video player
feat: Cupertino style record dialog
feat: Display amplitude
feat: Implement official emoji translations for emoji verification
feat: Nicer displaying of verification requests in the timeline
fix: Allow fallback to previous url if there is no homeserver on the mxid domain
fix: Correctly size the unread bubble in the room list
fix: Design of invite rooms
fix: Disable autocorrect for the homeserver url field
fix: Disable broken audioplayer for web
fix: Display loading dialog on start DM
fix: Dont add/remove DMs to space
fix: Empty timelines crashing the room view
fix: excessive CPU usage on Windows, as described in https://github.com/flutter/flutter/issues/78517#issuecomment-846436695
fix: Joining room aliases not published into the room directory
fix: Keep display alive while recording
fix: Load space members to display DM rooms
fix: Make translations use plural forms
fix: Re-add login fixes with the new SDK
fix: Reply with voice messages
fix: Report content localizations
fix: Requirements when to display report event button
fix: too long file names
fix: Try different directories on all kind of errors thrown for hive store
fix: Use plural string in translation
fix: use vrouter.toSegments
fix: Wait for sync before enter a room a user has got invited
This week Tobias implemented blurhash in NeoChat for a smoother image loading experience. Tobias also continued working on E2EE and this past week his focus was on decrypting encrypted files.
Ement.el, a Matrix client for Emacs, gained some more improvements this week:
Multi-account support was merged, so you can now use multiple accounts at the same time. You can even be in the same room in two different accounts, at the same time, in side-by-side windows (which is useful for testing). (Note that existing users will need to log in again, because the format of the saved-session file changed.)
Rooms you have been invited to now show up in the rooms list, and you can join them by clicking a button in the room's buffer.
Encrypted rooms now display a warning in the header and suggest that users consider using Pantalaimon.
Membership events are now formatted more usefully, similar to Element's style.
Completion for room and user names and IDs is implemented using standard Emacs commands and bindings (i.e. C-M-i by default).
The last-read marker may be jumped to, even if it's at an earlier event that has not yet been retrieved.
Emotes (i.e. /me-style messages) can be sent by pressing e.
Timestamps in the room list are shaded according to how "hot" (i.e. recently updated) the room is (see screenshot).
Nheko now supports uploading to online key backup and warns you before enabling it, that we don't recommend using the asymmetric version. If you update to one of the current builds (and or the next version), you will also experience a bit longer load times on first startup. That is because we force-cleared the cache to be able to handle the new goodies like spaces and sticker/emote-packs. In the best case, everything is seamless.
We also had contributions by various people:
resolritter cleaned up that while tab moved you down most popup lists, it didn't move up when shift was pressed.
Harmathy extended the FAQ to answer commonly asked questions like "Does Nheko support E2EE" or "What commands are supported". Don't worry, we know most of you won't read that and will still answer that question when you undoubtedly come asking it again. We just can now be even more passive aggressive than just pointing at the right wiki page. Instead we will point at the FAQ now, which will point at the wiki!
thombles made the emoji completer behave more nicely. Instead of jumping to the bottom left corner before closing, it will now just close. It should also now behave correctly when selecting text.
alfasi updated the install instructions for Gentoo.
I'm not sure we have ever seen that many new faces contributing to Nheko in a week, I'm pretty happy to see that!
Fractal
Busy week in Fractal land! It is the end for GSoC, but it’s not really over. While some merge requests from our interns are still ongoing, Julian merged a bunch of them. On Kai’s side, the long awaited Room details are finally here. Alejandro, on the other hand, landed code to get display name and avatar of accounts at startup.
Circles is a project to build a secure, end-to-end encrypted social network on top of Matrix. The iOS app is currently in the final stages of beta testing in preparation for a 1.0 release.
Updates this week include:
Fixed a bug that prevented some new users from registering. If you tried to sign up last week but the email validation failed, please give it another try with the latest build.
Cleaned up the "Home" tab for a simpler, cleaner look.
Fixed a bug where the summary of recent activity was failing to load on app startup. Also added a manual "refresh" button as a fallback.
If you would like to try the latest Circles beta (v0.93), you can get it from Apple here
Element Clients
Updates from the teams
Delight team
Room version 8 was marked as the preferred version for MSC3083 restricted rooms on matrix.org and in Synapse 1.41, released this week. This means Element clients can now show UI to create restricted rooms within a Space, and prompt users to upgrade rooms if necessary when making them restricted.
Improvements to the performance of the room summary API.
Lots of testing of Spaces in anticipation of it leaving beta.
VoIP
Fix cases where a call ringtone would continue even after the call was answered.
Add active speaker indicators when a user in a call is currently talking.
Working on showing call duration in call tiles.
Web
We’ve released 1.8.2 RC3 which includes fixes to windows font rendering, blur hashing and accessibility improvements, and other bugs.
Our internal threads prototype is in code review.
This week, we’ve been doing more work on threads, fixed some more cross-signing bugs, iterating on more compact replies, and investigating our process for translations.
iOS
Continue to work on URL preview.
App Navigation improvement: Continue to work on room navigation.
Account notification settings are now available.
Voice message rendering and playback fixes have been made.
We added a banner to advertise that iOS 11 will be dropped soon.
Room creation: prevent room duplication on creation.
Media upload sizing: Continue to improve media size selection.
Android
We are still improving the experience with Spaces
Notifications setting will be updated in the next release, with the ability to get notified when keywords are included in any message (only on un-encrypted rooms for now)
Working on Olm fallback key support
Besides that we are fixing bugs across the application and the SDK. We have fixed the issue of crashing when opening a room on devices running API 21. The fix will be in the next release.
Dept of SDKs and Frameworks 🧰
Ruma
Ruma is a set of Rust library crates around Matrix
It's been so long since our last update that I couldn't possibly list all of the individual changes, but here's a rough overview of the work since then (three months ago):
There's been loads of bug fixes, many compatibility improvements and at least one large refactoring. We've been much faster about releasing changes to crates.io after ruma 0.1.0, now we're already at ruma 0.4.0 (!); the changes needed to upgrade are really not that significant though. Notable areas of improvement are
UIAA: No more stringly-typed auth type + map of properties. The AuthData enum that holds the authentication information clients send to servers now has one variant for every auth type defined in the spec.
Event relations: These used to be serialized wrongly for encrypted events and were only (de)serializable as part of a larger event (making using them in custom ways impossible). Both of these issues were fixed.
If you want more detailed updates about Ruma, please watch our repository's GitHub releases, since nobody in the project currently wants to write regular blog posts or TWIM updates (if you are interested in changing that, get in touch over at #ruma:matrix.org).
This week a new stable version of libQuotient, 0.6.8, has been released. While the main focus has been fixing bugs and sustaining the codebase, one significant highlight is that read receipts and fully read markers are distinguished now, which should improve interaction with other clients that has been treating them differently for quite some time now. This version is anticipated to become the base of the upcoming Quaternion 0.0.95.
Hi everyone! Did you ever feel lost in the Matrix world? The room directory is big, but it's still hard to find something you like. Or are you a room moderator, but there is not much activity in your room because it doesn't have enough users?
This is why I want to share rooms (or spaces) I find interesting.
"Channel dedicated to games running in terminal environment (or one that looks like terminal) As long as the game could be easily ported to terminal, it belongs here :) Telegram: t.me/cligaming"
If you want to suggest a room for this section, tell me in #roomoftheweek
Dept of Ping 🏓
Here we reveal, rank, and applaud the homeservers with the lowest ping, as measured by pingbot, a maubot that you can host on your own server.
Bridge team has been busy, on the EMS side we've released Signal/WA for early bird testing.
Landmark changes in bridge libraries: we've released 3.0.0-rc1 of matrix-appservice-bridge. Both the IRC bridge and the Gitter bridge have tested it with great results.
Tadzik has been making massive gains on the IRC bridge, formatting tweaks and bugs being nailed.
Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://spec.matrix.org/unstable/proposals.
Otherwise, there has been a small amount of activity across the spectrum of MSCs this week. One MSC to call out is https://github.com/matrix-org/matrix-doc/pull/3283, which could do with some more input from the wider community.
Random MSC of the week
And finally, something fun. I've written a small script to pick a random MSC that people may or may not want to have a look at.
This week, we tagged the v0.5.0 release candidate, which contains two major advancements on the encryption front: support for server-side key backups and support for cross-signing. The addition of these features makes Dendrite significantly more user-friendly, as it is now possible to log out or share keys across devices without losing your conversations.
We'll be aiming to finalise this release next week. Stay tuned in #dendrite:matrix.org for more details.
Sytest compliance currently sits at:
Client-server APIs: 65%, up from 61% last time
Server-server APIs: 92%, same as last time
Those sytest numbers!! Might be time to start playing with dendrite?
We are on track to release Synapse 1.41 next week. This version will use an unstable property proposed by MSC3244: Room version capabilities to advertise to clients that they may create restricted rooms using Room Version 8, despite the default room version remaining at 6 for the time being.
This strikes a balance between the broad compatibility of an older default room version, while still making newer features available when requested at room creation time. However, from next week you are more likely to encounter v8 rooms, so please do ensure your homeserver is running at least 1.40.
I'd also like to tip my hat to Element employee Olivier, who has put in the work to ensure that tagged Sygnal releases are automatically built and uploaded to Docker Hub via GitHub Actions. Thanks, Olivier!
Heisenbridge is a bouncer-style Matrix IRC bridge.
Automatic queries (DM rooms) from IRC users can now be disabled and a query opened manually if needed (messages appear in network rooms)
Plumbs can now be set to not do disambiguation or ZWSP injection
Small cleanups and fixes
Heisenbridge is now considered stable and v1.0.0 has been released! 🍻 🥳
Focus is shifting to v2.0.0 which will be a major refactor. The 1.x series will at least receive bug fixes if not features. Do note that if you are using the master branch or latest tag for Docker it may cause a breaking change in the future when the work starts being merged. Highly suggest moving to version tags regardless of the deployment method. If you are using matrix-docker-ansible-deploy it has been updated to v1.0.0 as of writing so pulling the latest master there is advised.
If the car wasn't enough, I bring more news! Our matrix.org bridge library, matrix-appservice-bridge has had a total shakeup. Version 3.0.0-rc1 is out and with it comes the migration from the matrix-js-sdk to the matrix-bot-sdk. This is a massive change underneath that should result in faster performance, better typings and hopefully lower memory footprints too.
I'd encourage everyone using this library to update and see how well it works for you! The IRC and Gitter bridges have already experimented with this change and have seen good results, so I look forward to hearing feedback :)
(See details about the referenced car below and in Matrix Live above)
This week Janet improved receiving files in NeoChat. Now downloading a file can be stopped, a file type icon is displayed and it looks better! Other than that Felipe Kinoshita made some small visual improvements to the day separator in the timeline and Tobias continued working on E2EE inside Quotient.
Tomorrow Tobias and I will be doing a small presentation/demo of NeoChat at frOSCon in German. It's online so you don't have any excuse to not watch it: https://programm.froscon.de/2021/events/2711.html
Nheko
Nheko is a desktop client using Qt and C++17. It supports E2EE and intends to be full featured and nice to look at
Nheko now shows you the verification status of all devices in a room as well as in the memberlist. This is important so you can tell, if an unverified device may get access to a message, if you send it. You can always disable sending messages to unverified devices for extra peace of mind.
manu's room directory (finally) got merged. This means you can now discover public rooms on your server and join them by clicking the room directory button, that Nheko had for 3 years but was disabled until now! Support for the room directories of other servers as well as filtering by network should come in the future.
There is now an "Allow them in" button on pending knocks in the timeline, joins via room membership in a different room now tell you, what user's server was used to sign off on the join and you can set a room to restricted or knock only. (You currently can't change the list of allowed servers though).
Dialogs should now have a close button again on Windows, the emoji search field now clears on closing the emoji picker and we added a workaround for stickers not showing on Element iOS, because iOS can't display stickers without a thumbnail, even if a thumbnail makes no sense for stickers. (We just copy the sticker url into the thumbnail url.)
Nheko can now download encryption keys from online key backup. Uploading to online key backup will come soon(tm).
If you are interested, I will talk about Nheko tomorrow (21.08. starting 16:10) at FrOSCon in the Matrix dev room. Make sure you check out the other talks too, if you speak German! https://programm.froscon.de/2021/events/2706.html
Phew, that was a mouthful.
Element Clients
Updates from the teams
Delight team
This week, our web, iOS and Android engineers are all enjoying some time off.
On backend, we’ve completed pagination of the Spaces Summary. This week, we’ve been looking at performance improvements to the Summary API.
We intend to mark room Version 8 as the preferred version for MSC3083 restricted rooms on matrix.org and in Synapse 1.41 (due for release next week) via MSC3244. Once this change is made, Element clients will show UI to create restricted rooms within a Space, and prompt users to upgrade rooms if necessary when making them restricted.
Our design team is exploring some tweaks on how to make Spaces a little bit clearer and easier to understand.
Web
We released 1.8.1 which fixed some regressions with calls - sorry for any failed calls!
Work on our threads prototype continues. We’re hoping to have something to look at internally next week.
Sentry submission support has been added to Rageshakes. We expect to enable this on https://app.element.io next week.
We’ve been fixing some bugs around cross-signing, Windows font rendering, and image blur hashing.
Our new triage process has been published on the wiki.
iOS
Element Alpha work is complete. This is a new app for internal testing. A QR code is available on every PR like this one to install the build on a device. Only devices registered in the Element Apple Developer account can install this app.
Improved notification content: No more “Message” notification.
Fixed some timeline layout issues.
Media upload sizing: We added a prompt when sending video to select the resolution of the sent video. Media size prompt can be disabled in settings.
URL preview work has started.
App Navigation improvement: Working on room navigation to prepare the ground for threading.
On the performance side, we are working on room messages lazy loading to improve application speed.
Android
Fix authenticated jitsi not working in release (proguard issue)
Handle call ended reasons (busy, invite timeout).
Working on Olm fallback key support
Work on call ui and call tiles is finished, waiting to be reviewed
Start working on extracting API client from the SDK
Polyjuice Client v0.4.2 has been released. This release features more functions for creating messages, including file and media messages (thanks to multi prise), replies, reactions, and edits. Polyjuice Client can also now be considered a serious Matrix library as it has a new function to generate rainbow-coloured messages! 🌈 Multi prise has also added support for registering a new user, redacting messages, and searching the user directory.
Polyjuice Util v0.2.1 (an Elixir library for Matrix features that can be used on both the client-side and server-side) was also recently released. The main feature for this release is support for handling Matrix URIs, and supports mxc:, matrix.to, and matrix:-style URIs.
Version 2 of Simple-Matrix-Bot-Lib will release very soon. It is complete in all but the documentation. If you would like to try version 2 early, you can find it on a branch of the git repository here https://github.com/KrazyKirby99999/simple-matrix-bot-lib/tree/v2.
Some of the changes are shown below:
Version 1
Version 2
Summary
bot.add_message_listener(example_handler)
@bot.listener.on_message_event or @bot.listener.on_custom_event
In version 1, each the bot.add_message_listener method was used on message handler functions for them to react to messages. In version 2, this has been replaced by a decorator, @bot.listener.on_message_event. A similar decorator, @bot.listener.on_custom_event(event) can be used to react to other events. For information on supported events, refer to the matrix-nio docs.
In version 1, the only way to login to a homeserver was to use a combination of a username and password. In version 2 it is also possible to login using a SSO login token as well. As before, the homeserver argument is required, and the session_stored_file argument is optional.
match.args #For message "one two three", returns "two three"
match.args #For message "one two three", returns ["two", "three"]
In version 1, match.args returned a string. In version 2, match.args returns a list of strings.
These changes are only some of the most important changes between versions 1 and 2, and there are more changes in addition to these. I apologize for the delays in releasing version 2.
Mjolnir v0.1.19 is out now with a voice message protection built-in (ideal for public communities where voice messages can't be easily moderated) and updates to the shutdown room command to support modern Synapses. Check out !mjolnir protections after upgrading, and visit #mjolnir:matrix.org for help and support.
Since element now landed voice message support I build a small maubot plugin which prevents audio and voice messages as those cannot yet get restricted by power level.
It starts by warning you via replies, after a configured amount of warnings goes over to kicking and after a certain amount of kicks it will ban you in the room the event was sent in.
The counter is global so if a user in room A runs out of warnings and the same user sents a voice message in room B where the bot is present the bot will ban the user also in room B without further warnings.
New version of Middleman, the helpful relay bot in the middle. Version 0.2.0 in addition to various smaller changes and fixes, enables sending out messages from the command room to any room the bot is in, supports relaying notices (so you can command other bots using the Middleman bot 🤖) and adds support for flagging certain rooms as "mention only", in which case only mentions are relayed.
Howdy folks, it's been aaaaages since I've done mad little project but I had some LEGO and was bored on a Sunday. I present to you matrix-poweredup! This is a little bot that connects to any LEGO PoweredUp devices (using the node-poweredup library). You can then start controlling the motors via Matrix, and have the sensors report back into the Matrix room. It's currently limited to a RC buggy I picked up over the weekend but it's very extendible. It also includes a web application to control things via a gamepad, if that's your bag.
There will be a little demo at the end of Matrix Live, so watch this space
As a few of you noticed the pages are currently down due to some mess that happened (not going into detail on purpose here).
The pages however will soon come back. I am now using the time they are down to improve the code and some pages on it. So dont be worried it is not dead but it will come back as soon as I get those changes done 🙂
Circles is an iOS app for end-to-end encrypted secure social networking and sharing, built on top of Matrix. Its goal is to provide a safe and convenient way for close friends and families to share things that they wouldn't post publicly -- e.g. for parents to safely share pictures of their kids. You can also use it to share updates with your friends, without a creepy advertising company data mining every word.
Circles features include:
Social "wall"-like functionality and timeline of friends' posts for each of your social circles, e.g. Friends, Family, Neighbors, Coworkers, etc.
Private groups
Encrypted photo galleries
Recent updates to the Circles beta include:
Support for use with any Matrix homeserver, including a new encrypted recovery and key backup mechanism that should be compatible with other Matrix clients like Element. (Please note: For use with standard Matrix accounts, be sure to select "Advanced options" at login and enter your passphrase for key backup / recovery.)
Emoji reactions
Markdown formatting for text posts and image captions
Better support for larger screens (iPad)
The latest beta build of Circles (v0.91) is available from Apple on TestFlight
As a hobby, I built a website called Digital Justice. It's a website that explains in layman's terms what certain digital topics are (like data sovereignty, software autonomy and abandonware continuity) and why those topics matter.
The website may be a bit too simple for privacy gurus who know their stuff, but it's meant as an accessible resource to help people understand why privacy matters. Feel free to use the website as a resource, share the RSS feed or use it as a FAQ to your colleague who doesn't understand why you're so adamant on using an open communication protocol.
If you'd like to see something corrected or would like to add something to the website, the source code's here and you can always contact me through the website.
Hi everyone! Did you ever feel lost in the Matrix world? The room directory is big, but it's still hard to find something you like. Or are you a room moderator, but there is not much activity in your room because it doesn't have enough users?
This is why I want to share rooms (or spaces) I find interesting.
"Friendly Physics Related Discussion Talking Point: LIGO & Hawking's area theorem https://tinyurl.com/nzuaaepv Book Club 22nd August 15:00 BST | Bishop & Goldberg (manifolds) | Book Club Site: https://tinyurl.com/2sn9upx2 +stardust:matrix.org"
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.
Work on Spaces continues with MSC2946 (Space Summary API), specifically revolving around how to paginate the summary. This has called into question how pagination across Matrix works in general, which is a prime target for refactoring - perhaps an upcoming consistent pagination MSC? :)
Otherwise, as listed above, MSC3289 (room v8) has merged! It brings with it the ability to grant the ability to join a room based on one's membership in another room. While the was originally conceived for allowing users that are part of one Space to be allowed to join rooms, it has been built upon in other creative ways. Such as in MSC3325, where it could be used to make room upgrades more seamless!
And finally, a special thanks to Lukas Lihotzki for all of their spec PRs this week. They're been stellar!
Dept of Servers 🏢
Synapse
Synapse is a popular homeserver written in Python.
Big news! Synapse 1.40 is out and it comes with support for Room Version 8! Version 8 includes "restricted rooms" which are only visible and joinable by members of a specific Space (or via direct invitation). This finally makes it useful to use Spaces as containers for private rooms, like you might with a company, guild, or open source community. Once invited to the parent Space, members can join and discover the otherwise private rooms within. No more /invite spam every time you bring someone on board!
Also: If you've received any push notifications in Element Android or Element iOS this week, they've come via our shiny new stateless release of Sygnal! If you haven't received expected push notifications on those platforms this week... please alert us immediately. 😉
Lastly, Element is overjoyed to welcome David Robertson to the Synapse team. Welcome aboard, David!
Exciting update this week on the MSC2716 front for backfilling historical messages into existing rooms! All of the bigpieces are now merged for full-fat federated historical messages in Synapse 💪
MSC2716 was also consolidated and updated to propose the /batch_send implementation we're using in Synapse. There is also a plan for how this can be backwards compatible with existing room versions so no need for those pesky room upgrades. This will help us be able to jump in early and use this for Gitter as soon as the new event types become stable. Go jump in on MSC2716 to give feedback and read up on the details 😀
Ement.el, a Matrix client for Emacs, continues to improve. Some of the changes in the past week:
Additions
Messages may now be written in Org-mode syntax (a format similar to but more powerful than Markdown). Internally, it's automatically converted to HTML and sent as the message's formatted body. This supports nearly any HTML feature that Org-mode can export to, including rich text, bulleted and numbered lists, and even tables (this message is being written directly in Org syntax; see a table of new bindings at the end of this list).
An optional pop-out compose buffer makes writing and editing long messages easier (also being used for this message).
Read/fully-read marker lines are now displayed after the last read message, and these are synced with the server and other clients. These lines can also be placed with a command, making it easy to return to a certain event later, even on other clients.
Usernames at the beginning of messages may optionally be colored to match the addressee's username. This especially helps following conversations in busy rooms.
Ement.el is confirmed to work with Pantalaimon, the E2EE-aware reverse proxy, making encrypted rooms work transparently. Once Pantalaimon is installed and configured, connecting through it with Ement.el is trivial, and this step is documented in the readme.
Improvements
Per-user displayname and message colors have improved (and configurable) contrast ratio with the background color.
Reactions are sorted by the number of users who have sent each one.
Unread rooms are displayed more prominently in the room list.
New default bindings make it quick to jump to the mentions and notifications buffers.
Sync timeouts are handled more gracefully and Ement.el re-syncs automatically.
Various minor fixes and enhancements.
And here's the new-bindings table, written directly in Org syntax and sent automatically as HTML:
The tool for migrating communities to spaces in Element Web has been completed
Lots of accessibility support for Spaces in Element Web
Preparing Element Web to take Spaces out of Labs
Pagination of the spaces summary now works for local rooms, we're continuing work on fetching data over federation.
On iOS, we’re working on exploring rooms and browsing users in a space
Web
v1.8.0-rc1 is available on https://staging.element.io/
Work on threads continues - we are narrowing down on a first prototype based on treating chained replies as threads
We’ve spiked support for Sentry which will give us more insights into how the app is working in the wild
Support for hot module reloading for React components, following last week’s work on CSS hot reloading
Improved the look and feel of image blur hashing by adding some animations
iOS
The release candidate 1.5.1 is available for testing on TestFlight. Voice messages are enabled by default
Towncrier is now enabled on all of our 3 repositories
Reaction count got a fix. Please rageshake if you see unexpected count
Notifications content has been fixed or improved
Element alpha is almost finished. This is a new app that we will use for internal testing. There will be a QR code on every PR like this one to install the build on a device. This device must be part of our ad-hoc device list
On the performance side, the incremental sync has been improved and merged on develop. Next is lazy loading room messages
Android
We made 2 releases this week: 1.1.16 to fix a regression that prevented sending messages in e2ee rooms and 1.2.0 with voice messages enabled by default
Voice messages have been improved before the release
We continued to update the call UI with call tiles in the timeline
You now get notified, if someone reuses a megolm session index, because that in theory could be used by an attacker to send seemingly verified messages. We also now render decryption errors more nicely and users can now explicitly request decryption keys (in addition to the automatic key requests in the background that already existed). We also fixed an issue, that could corrupt the database when using the flatpak and if you lost your network connection, Nheko should now reconnect faster instead of potentially waiting 17 minutes for a TCP timeout. The storage for cross-signing secrets should now be more reliable, you can close image popups with the "Escape" key, close the current room by double clicking it and a few more miscellaneous bugfixes.
You can track the remaining E2EE bits, before we declare our E2EE support as stable, in this comment now: https://github.com/Nheko-Reborn/nheko/issues/23#issuecomment-894689158
It has learned how to handle images / videos, and can now insert them directly into the rendered markdown. Creating new posts has been significantly simplified and now makes even less work for the author. For example, Hebbot now automatically generates a command to quickly download all images/videos at once.
Maybe other communities are interested in creating a "This Week in X" blog as well👀?
I find "read it later" services like Pocket extremely useful, but fail hard at actually keeping my read it later list at a sane level. For me it's hard to maintain the list and actually read through things as choosing which one to process feels overwhelming due to the amount of items.
Randomization to the rescue! I made a Pocket plugin for Maubot which gives me a random article from my list and allows me to easily archive it. Now I don't need to decide which article to pick, the computer does that for me!
Source code and info: https://github.com/jaywink/maubot-pocket
Ps. Maubot is truly awesome as a bot system, well documented and easy to develop on 😻
Bornhack is a 7 day outdoor tent camp where hackers, makers and people with an interest in technology or security come together to celebrate technology, socialise, learn and have fun.
This year, Asbjørn and I are hosting a couple of events related to Matrix:
Hi everyone! Did you ever feel lost in the Matrix world? The room directory is big, but it's still hard to find something you like. Or are you a room moderator, but there is not much activity in your room because it doesn't have enough users?
This is why I want to share rooms (or spaces) I find interesting.
I'm taking over hosting This Week In Matrix again to give Ben a well-deserved break. Your favourite TWIM host will of course be back next week, but in the mean time, let's see what Matrix goodness has happened this week!
Matrix Live 🎙
It's demo week again this week! We've got three great demos to share with you this month:
Robert, the latest addition to the Matrix VoIP team, gives us a sneak peek at his experiments with implementing native full mesh video calls in Matrix
Gil, from the Element iOS team, gives us an update on the implementation of Spaces in the app
and finally Ryan, who's been exploring ways to use Matrix beyond chat, shows us his shiny new full stack integration test solution for Matrix client and servers
And I hear there might also have been a bonus demo that managed to sneak its way lower down this post 😉
The Ansible community has adopted Matrix as an official place to chat (alongside IRC). We'll be updating our documentation in the near future, but our rooms all have aliases already - add "ansible.im" to your directory search, or join #space:ansible.im if you're in the Spaces beta. See you there!
Super psyched to welcome the Ansible community to Matrix!
Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://spec.matrix.org/unstable/proposals.
Room version 8 is due to land soon - which will bring restricted rooms to the masses. This is most useful in the context of Spaces, which allows granting access to rooms in a space based on a user's membership of that space (or another space!).
Today in not-Synapse news, we're getting ready for a new release of Sygnal, our reference implementation of a Matrix push notification gateway, early next week. The most significant change is that Shay, one of our Outreachy interns, has determined that Sygnal can function completely statelessly, removing the need for a SQLite or PostgreSQL database. This clears the path for proper horizontal scaling and high availability deployments of Sygnal.
On the Synapse side of the world, MSC3289: Room version 8 entered Final Comment Period (FCP) and we expect it to be merged into the Matrix spec over the weekend. If that occurs, we'll be on track to include support for this room version in Synapse 1.40 next week. Tune in next week to find out how that went!
Conduit
Conduit is a Matrix homeserver written in Rust https://conduit.rs
Hey everyone, I want to release the first major version of Conduit in a few weeks and I need your help!
Almost all features are on the master branch already, so please try to deploy your own Conduit now and try to find bugs. See https://gitlab.com/famedly/conduit
State res has been tested a lot, so it's okay to join any public rooms (room version 6 preferred).
The barebones DEPLOY.md is the easiest and most tested way to install Conduit. We also have docker images, but I think the documentation still needs to be improved (please contribute if you can!)
Please open a gitlab issue for any problem you run into.
mx-puppet-teams is a new Microsoft Teams (Chat) bridge built on the mx-puppet-bridge platform. The bridge does not require admin privileges on the MS Teams side, so can be used by any user with access to Teams. It's currently using the public Microsoft Graph API, which comes with some limitations, but feature support is being improved.
Focus is currently on Chats (one to one, group chats, etc) rather than the main Teams rooms.
Still a fair amount of work to do, but it would be great to get feedback and comments from anyone who is interested.
Thanks!
Dept of Messengers 📱
The list of Matrix clients is getting larger and larger! And it's not only chat clients anymore! So I thought I'd experiment a bit this week by splitting them in two categories: messengers and non-chat clients. Let us know how you like this format in #twim:matrix.org.
FluffyChat
FluffyChat is the cutest cross-platform matrix client. It is available for Android, iOS, Web and Desktop.
Heya, we are very grateful for all the awesome translators helping us translate FluffyChat! Unfortunately, we aren't the best at managing such a huge effort as translating such a large app into so many different languages. As a result, suggestions went un-reviewed on weblate for long, people weren't able to submit translations, etc. We are very sorry for that, but want to work on fixing that! As, well, we are only really programmers with little time, we thought of asking for help from the community (you all!)! That is why we are looking for a translation manager for FluffyChat. No programming experience at all is required, it'd mostly be about managing our weblate and answering translation-related questions. If you are interested, please plop into our room #fluffychat:matrix.org and say so! (And ping Sorunome if you don't get answers). Looking forward to a where translations are managed better, and thank you again for everyone who did bite through all this and contributed translations so far!
So if you're into translations and want to help, feel free to let them know!
Nheko
Nheko is a desktop client using Qt, Boost.Asio and C++17. It supports E2EE and intends to be full featured and nice to look at
This week I added a sticker/emoji pack editor to Nheko. This means you now don't need to create packs manually in /devtools anymore, but you can create and edit packs much more conveniently. There are still some rough edges, but we expect to sort those out in the near future. Make sure you check out the demo video I recorded!
Furthermore LorenDB has been busy porting more of the remaining dialogs to Qml, dialogs should now float properly on Wayland and have a proper close button on KDE. We also fixed a few more encryption bugs, which means we should be able to mark E2EE as stable in Nheko soon and we cleaned up old cruft in the codebase.
And if that's not enough for you, since it's demo week, Nico's also showing off Nheko's brand new sticker goodness!
Ement.el, a new Matrix client for Emacs, continues to gain new features: deleting messages, showing room avatars, adding to reactions by clicking them, and new "mentions" and "notifications" buffers that show messages from multiple rooms in a single window. You can even reply to messages from any room in the Notifications buffer, which makes it easy to follow multiple rooms at once, rather than having to switch between rooms. (Room: #ement.el:matrix.org)
NeoChat
NeoChat is a desktop chat client for Matrix. It uses Kirigami to provide a convergent user interface on desktops (KDE Plasma, GNOME, Windows, and other desktops) and phones (Plasma Mobile and Android).
This week, we merged a few fixes related to login, logout and account switching making NeoChat crash less during those operations. Currently, we are working on a nice ways to show location events and adding the possibility of sending those events
Element clients
Updates from the teams
Delight team
MSC3289 has entered FCP, adding support for Room Version 8, which includes support for MSC3083 (Restricting room membership based on membership in other rooms).
We’ve been working on a tool for migrating communities to spaces, which will be available in Element Web
We’re adding pagination to the Spaces Summary API to improve support for spaces with large numbers of rooms when browsing Spaces room lists
On iOS, we’ve been working on suggesting Spaces in room lists
VoIP
Mute status signalling now landed on develop! Thanks again to Simon.
Web
Voice messages! They’re out on develop.element.io and planning to go out for release soon. Let us know if you run into any issues, or have suggestions on how to make it better.
Made Improvements to our changelog automation, which should lead to much more joyous changelogs
We merged initial client-side support for Posthog analytics, adhering to the user’s existing analytics opt-in preferences
Support for CSS hot reload, which has incrediblised working on Element’s styling for designers and engineers
Some iteration and bug fixing to image blur hashes and message bubbles
Full steam ahead on threading, we have a backend for it in js-sdk
iOS
Same thing for voice messages as web ^
We started discussions (and experimenting) about SwiftUI for new features. Minimal target version is 11 but some new features, like notifications for keywords, users and rooms completion, etc, will be available for devices running iOS 13 (maybe 14).
We adopted Towncrier to manage our change logs. Check the contributing guide above for the rules we defined and how we use towncrier across our 3 iOS repositories
Blank notifications (“Message”) are being fixed and improved. There will still be a fallback notification content but it should happen less often. In this case, we will display “Notification”
In parallel, we are continuing working on performance improvements. We still target an instant start for XL accounts (with thousands of rooms)
Android
Same thing for voice messages as web ^ + fixed a rare crash
We fixed a regression that blocked message sending in an encrypted room. A new release is in progress
Sailtrix is a Matrix client for SailfishOS supporting basic end-to-end encryption. This week I've released its third iteration. Here's a list of features:
Logging in with username and password
Reading the past messages in a room (currently limited to loading 30 at a time)
Messages with basic formatting can be read (bold, italic, etc)
Sending messages
Sending messages in reply
Editing messages
Deleting messages
Starting direct messages
Ignoring and unignoring users
Viewing and downloading of images
Viewing of audio and video
Downloading files
Sending files
Accepting invites
Public room directory
Creating Rooms
Basic end-to-end encryption support (Late Alpha State)
All sensitive information including messages are encrypted at rest with Sailfish Secrets
You can download Sailtrix at https://openrepos.net/content/hengyedev/sailtrix
Two weeks ago I told you about our interns presenting at GUADEC. A video recording is now available. They kept busy in the meantime, with Alejandro landing work on display names and avatars (!801 and !802), and Kai working on room sorting in the sidebar.
In my absence, the rest of team Hydrogen has been hard at work to bring you the ability to send replies, thanks to Daniel, and to open the member panel when clicking through from the member list, thanks to Midhun. If all goes well, this should get released tonight. Next up, Midhun will start working on SSO login support, a feature a few people have asked about in the past 🎉
Mirage
Mirage is a fancy, customizable, keyboard-operable Matrix client written in Qt/QML and Python. Currently in alpha and available on Linux.
Keys.quit keybind to exit the application, unbound by default
Keys.earlier_page and Keys.later_page keybinds to navigate the pages/chats history, Ctrl+H/Left and Ctrl+L/Right by default
Mouse button 4/5 can now be used to navigate the history
General.wrap_history setting, affects the behavior of history navigation
Keys.Rooms.Direct section, allowing keybinds to jump to specific rooms
Keys.Rooms.oldest_unread/latest_unread to jump to the room with the oldest or newest unread message, by default Ctrl(+Shift)+U
Keys.Rooms.oldest_highlight/latest_highlight, same as above but only considers rooms where you've been mentioned/replied to/etc, by default Ctrl(+Shift)+H
Ignoring users:
Ignore option in the context menu for room members
Ignore option when rejecting invites
Editable ignored users list in account settings
Invites and messages from ignored users are silently discarded.
Their display name, avatar and presence are removed.
They will also always be placed at the bottom of the room member list.
Status messages history in the left pane account context menu, and auto-suggestion for the status field.
The number of saved entries can be controlled with Presence.saved_status.
"Add another account" entry in the top left settings menu
Copiable room ID field in the room settings pane
Back button in account settings and server browser when the window is too narrow to show the side panes
Escape key handling in the account settings, server browser and add chat pages
Support for rendering HTML <hr> lines (markdown ---) in messages
Changed
Keybinds:
Keys.messages.clear_all default keybind is now Ctrl+Shift+L
Keys.Account.AtIndex keybinds will consistently move to the corresponding account settings, instead of skipping to the first room if the account is expanded in the left pane
Keys.messages.open_links_files(_externally): ignore matrix.to user and room mention links
Presence:
Allow using the invisible mode on servers not supporting presence, which will still prevent sending typing notifications and read marker updates
Restore any previously set status message when reconnecting after being offline, unless another one has been set from a different client
Render set status message striked out while invisible/offline to indicate that it isn't being broadcasted
Error popup:
Multiple unexpected errors will be combined into a single popup, instead of opening a new one for every error
Report button now links to Github issues
More details shown for matrix errors
Messages:
Require a space after the # for markdown titles
Render matrix.to URL in messages as shorter hyperlinks
Left pane rooms:
Last message display: shorten long "In reply to..." prefixes for the message to be shown as "↩ <name>: <reply>"
Show the inviter for invites where the room has an explicit name/alias set
Leave, decline invite and forget room options are merged into an unified popup
Raise default General.tooltips_delay from 0.5 to 0.7s
Updated headers UI navigation arrow icons
Misc UI text changes for shortness and consistency
Fixed
Fix error popup appearing when invalid room events appear in syncs
Fix parsing of URL in messages containing some special characters
Left pane rooms last message display: fix > quote right after another quote not getting colored
Fix the forgetting rooms feature
Fix rendering status messages containing HTML-unsafe characters
Fix chat bottom bar for invited/left rooms glitching at certain sizes or not properly updating when the room's state changes
Prevent theme animationDuration property from affecting the speed of loading spinners, progress bars, server ping indicators and image rotation button cooldown
Hopefully fix account presence stuck flickering between two states
The backend.errors.MatrixError: (200, None) error occurring on Synapse 1.38+ servers should be fixed by the latest matrix-nio commit, which is included in the new Mirage appimage and flatpak. For manual installs, make sure to run pip3 install --user -Ur requirements.txt again before rebuilding. For packagers, the commit will be present in nio 0.18.5, which will be officially released before tomorrow.
A collaborative whiteboard based on the [matrix] protocol. github
A lot has happened this week. The biggest task was the switch to a proper build system (the project now is based on yarn and webpack). This gave the opportunity to do lots of refactoring and code cleanup. Additionally there is now a spec for the whiteboard events which got implemented this week. For the ones who are curious, here is the file: spec
There are also a couple of new features and fixes. Most notably:
The Text tool was added. Text in different colors and sizes can be added to the whiteboard.
The Image tool was added. Images are uploaded and than rendered on the canvas (not yet published but will be available in a couple of days)
The styling was improved. There are less gray areas which I did not like and the corners are less round.
And the repository got a lot of love with more details in the readme and better code/folder structure.
There is now also a matrix room for feedback, issues and ideas: #TheBoard:matrix.org
Feel free to try it at: https://toger5.github.io/TheBoard/ (preferable not with your main matrix account)
Circles is an iOS app for end-to-end encrypted secure social networking and sharing, built on top of Matrix. Its goal is to provide a safe and convenient way for close friends and families to share things that they wouldn't post publicly -- e.g. for parents to safely share pictures of their kids.
Recent updates to the Circles beta include:
Support for use with any Matrix homeserver
Emoji reactions
Markdown formatting for posts and photo captions
Better support for larger screens (iPad)
The latest beta build of Circles (v0.90) is available from Apple on TestFlight
They've also added:
NOTE 1 - If you're using an existing account, you'll need to tap the "Advanced Options" on the login screen so you can give it your password for SSSS / encrypted key backup / recovery / etc. Otherwise Circles will try to use a login password that it generates with MSC 3265 so it can do everything safely using just a single password.
NOTE 2 - Circles is NOT RECOMMENDED for use on an account that you're already using for Matrix chat, for the above reason and more. If you do this, prepare to see lots of extra, weird rooms in Element / Fluffy / Nheko / whatever chat client you're using. Also if you decide to try this anyway, please let me know how it goes. :-)
NOTE 3 - Circles is not available yet in France. Sorry. I gotta update my encryption compliance documentation with Apple.
If you want to know more about this project, feel free to join #circles:matrix.org!
Dept of SDKs and Frameworks 🧰
Version 1.6.0 of Simple-Matrix-Bot-Lib is released!
Feature: Sending images is now possible via bot.api.send_image_message. An example and more information about this can be found here.
Fix: There was a bug in which the bot would print the join message twice. This is now patched.
Notes:
Version 2.0.0 of Simple-Matrix-Bot-Lib will be available on pypi soon with incompatible changes, so make sure to specify the version of Simple-Matrix-Bot-Lib in your dependencies to simplematrixbotlib >= 1.6.0, < 2.0.0 until your code is compatible with the new syntax. Check TWIM next week to learn more about the new changes.
I moved all the mautrix bridges and libraries to a fancy new org: https://github.com/mautrix
GitLab and/or Docker haven't invented redirects yet, so docker registries are split: the old dock.mau.dev/tulir/mautrix-* paths will keep working for old versions, but new images will be at dock.mau.dev/mautrix/*.
This week continues the regular K8s updates, with my Helm Charts seeing updates for element-web to 1.7.34 as well as a fix for handling IPv6 in the well-known listener for Synapse.
Dendrite Helm chart
And because Synapse started feeling a bit lonely being the only one with a Helm chart, s7evink offered:
Well, Hi there TWIMers :P
I've been working on a helm chart for Dendrite (polylith/monolith (untested)), since i was sick of creating a single deployment for each component.
For now it's working as expected, but since I'm pretty new to creating helm charts, please let me know if there's something wrong/bad practice.
NOTE: Polylith is not yet supported by the developers!
Shout out to Ananace, for the awesome helm chart for Synapse, which was my inspiration! :)
Rejoice! Now Dendrite aficionados have even more ways to enjoy our next-generation homeserver!
I've released mxadm, a small CLI tool for Matrix room admin that I've been working on for a few weeks; more details here: https://erambler.co.uk/blog/introducing-mxadm/
Part of the ServerStats Project is to use the data to build various charts. This project is currently still in progress to be written using RLang.
This week new is a World Map of IP based locations of Matrix Servers. Be ware that the coordinates are quite rough due to the quality of the free maxmind databases used. The map data gets updated every 12h.
Also the website for those statistics got fully overhauled to feel more modern.
Check it out at https://stats.serverstats.nordgedanken.dev or the Source at https://github.com/mx-serverstats/server_stats_web_statistics
envs.net (@cblte:envs.net and @creme:envs.net) has forked the TU-Dresden matrix/element help documentation - https://doc.matrix.tu-dresden.de/en/ (used hugo ssg).
Our fresh help page can be found at: https://matrix-help.envs.net/ and now uses a simpler ssg called mkdocs.
We decided to fork the existing documentation of the TU-Dresden to make it easier to use. In addition, the project envs.net already uses mkdocs for its existing documentation.
The link to the Git repository can be found directly on the page. We look forward to improving it in the future and would also appreciate your help.
Feel free to use this documentation for yourself and create your own fork.
Hi everyone! Did you ever feel lost in the Matrix world? The room directory is big, but it's still hard to find something you like. Or are you a room moderator, but there is not much activity in your room because it doesn't have enough users?
This is why I want to share rooms (or spaces) I find interesting.
Let's learn about PyQuotient with Vlad and Alexey.
Dept of Status of Matrix 🌡️
Element raises $30M as Matrix explodes!
At first when I read the headline I was scared - explodes? How can I protect myself from this explosion? After a moment of reading this huge news, however, I was relieved - Matrix has exploded in popularity, and Element have all new funding to keep driving the ecosystem forward. Let's go!
Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://spec.matrix.org/unstable/proposals.
While a quiet week for MSC state changes (shown above), there's still plenty of work and collaboration happening!
Spaces work marches forward as MSC3083 has been merged - allowing for users to join a room in a space based on their membership in a space. We think this will really help with the management of Spaces that contain lots of rooms that are otherwise invite-only.
Otherwise MSC3291 (Muting in VoIP calls) has been receiving positive feedback this week!
Finally, MSC3289 (room v8) is ticking along as the implementation is tested in Synapse and Complement tests.
Dept of Servers 🏢
Synapse
Synapse is a popular homeserver written in Python.
Of all the pull requests we landed, my hat is off to MadLittleMods and his Graphviz prowess in #10250, which moves us one step further down the path toward MSC2716: Incrementally importing history into existing rooms. Mmm. Graphs.
But back to Synapse! You should check out the release announcement, but the bulk of the work this cycle went into internal cleanups. Synapse should also be slightly more performant, reliable, and should log fewer spurious errors. Of note, ShadowJonathan did a lot of work with pyupgrade and com2ann to move the entire codebase to more modern Py3.6+ conventions and inline type annotations; thanks, ShadowJonathan!
Synapse 1.39 also continues our march toward unifying Synapse's interface for extension modules, and we've now exposed plugin hooks for the account_validity option, and experimentally implemented hooks for third party event rules.
Lastly, special thanks to kroeckx who has submitted 17 pull requests against our SyTest test suite in the past month, mainly arising from running SyTest against Conduit. Thank you!
Hello! This week, I created a matrix 1-click app on the DigitalOcean marketplace. It's basically a pre-baked droplet image that is pre-configured with synapse, element-web, caddy, postgres, plus some setup and moderation tools. My intent was to make self-hosting a Matrix system as easy as pointing some DNS records and running a single script. It makes a lot of sense for smaller, more casual Matrix homeservers, and can serve as a good starting point! It also includes some small utility scripts - ./reset-password, ./new-user, etc.
Secrets like the postgres password and registration password are generated on first boot, there's no sensitive data baked into the image. Of course, it would be nice to be able to verify this - the source code used to build the image is being open sourced. I'm just waiting for some internal processes to finish. It will show up at https://github.com/digitalocean/marketplace-matrix somewhat soon!
Heisenbridge is a bouncer-style Matrix IRC bridge.
Lazy joining of IRC users (see below)
Keep nick feature has been added
Bridge aliveness can be tracked from bridge bot presence
Ident replies can be customized by the admin for all users, default to mxid hash
Pillifying IRC nicks has been improved
The biggest impact feature this time around is configurable lazy joining IRC users which improves the experience of joining massive IRC channels by not flooding the homeserver with join events. This is now the default and can be changed globally by the bridge admin or overridden per room by users.
Many fixes here and there. Still a few issues left before 1.0 and a lot of testing.
Cinny is a web-based matrix client focusing primarily on simple, elegant and secure interface.
The story started when a friend of mine introduced me to matrix and even after his help it was too difficult for me to get around with Element. I guess it was because Element is too different from other popular chat apps. Then I tried to find a good alternative for web but no success.
That's when me and my friend thought about creating Cinny. For the few weeks we were doing it for fun but when we shared a screenshot of the prototype, the response from people was surprising and that's when things got interesting. We got to know that a lot of people out there are looking for a simple and modern client and so we started building it.
Screenshot on Chrome desktop (see below)
Features
Cinny support the following features:
Login/logout and registration of accounts
Four different themes
Basic alphabetically sorted channel list with unread notification indicator
Creating channels and joining/leaving public channels
Creating Direct messages
Inviting users to channel and basic user list
Sending text messages, emojis and attachments
Support viewing edited messages, reactions, replies, attachments and markdowm
Read receipt for latest messages and typing notifications
History scroll and button for quickly scrolling to bottom in room timeline
Many improvements have been made to Ement.el, a new Matrix client for Emacs. Ement.el can now send and display images, replies, and reactions, as well as edit sent messages. It also supports desktop notifications, configurable by the user to pop up for mentions or for all rooms with open buffers. (Room: #ement.el:matrix.org)
Something something expands until it reads... Matrix?
Element Clients
Updates from the teams
VoIP
1:1 screen sharing is now merged and on develop! Please give it a try and report bugs - plan is for it to go out in the release after next (ie. two weeks from Monday). Huge thanks to Simon for working on this.
Simon also has PRs up for mute status signalling, done via MSC3291
Fixing the bug where the buttons in a call don’t work in full screen mode
Web
v1.7.34-rc.1 is out (maybe even .2 by the time you read this) - full release planned for Monday
Continuing to figure out a plan of attack for threading
Looking at message bubble feedback & fixing bugs
Also looking at fixing blurhash bugs
iOS
The coming release, 1.4.8, which is available on TestFlight, supports voice messages. The feature is under a labs setting. DM and room tabs now contain only rooms. Local contacts and the public rooms directory can be found elsewhere in the UI. Full changelog at https://github.com/vector-im/element-ios/releases/tag/v1.4.8.
We continue to make good progress on papercuts (https://github.com/vector-im/element-ios/milestone/58) and the overall app stabilisation.
Android
Release candidate 1.1.15 is getting prepared. It will include voice messages, under a lab flag.
Some bugs on the crypto part have been fixed, it should improve the performance on e2e rooms.
FluffyChat v0.35.0 has been released
FluffyChat is the cutest cross-platform matrix client. It is available for Android, iOS, Web and Desktop.
This summer's gone by so fast it feels like it's only been a week! Here's a summary of what's happened with Ruma the past few weeks:
We have had a productive summer with our two Google Summer of Code students, Adam Blanchet and Devin Ragotzy. Adam finished implementing the last of our Identity Service API endpoints, bringing us to 100% implementation of all the Matrix API endpoints! (And we promise there are no bugs because "Rust," right?)
Besides improving the Matrix ecosystem, Devin has been helping the Rust ecosystem at large by writing some Clippy lints to improve our codebase and upstreaming his additions.
Read more here: https://ruma.dev/news/gsoc-2021-intro/.
I made maubot-ldap-inviter, a maubot plugin that (surprisingly) invites users into Matrix rooms, according to their membership in LDAP groups.
We are switching from RocketChat to Matrix in the next round of a software engineering course where students work on software projects in small groups.
RocketChat has a LDAP sync, which we previously used to auto-add students and tutors to the chatrooms they need to be in (global announcement room, helpdesk, chat for their group etc.).
As there was no such feature for Matrix, I built the bot over the last few days.
It's still somewhat specific to our LDAP setup, but if anyone wants to use the bot and has questions, just open an issue in the repo!
At etke.cc we suffered long enough with 2 things - order form on website and invites on private matrix servers.
No more suffering! Because now the Mother Miounne exists and it does 2 things (for now): handles of web/html forms (sends it to matrix room) and handles invite tokens (integrates with matrix-registration)
We use it as backend of etke.cc service for some time, but still consider it as unstable, so try it yourself, hope it can help you 😉
Great news! Matrix Dev-Room and Matrix booth are approved! 🎉
We are currently creating a schedule and we have open slots for talks and workshops!
If you like to present your topic or just help out please contact me (@oleg:fiksel.info) (or oleg@fiksel.info) now! Language is preferably German, but English is also ok.
This is a personal project I started a couple of weeks ago. I was dreaming of a good open source solution for OneNote or GoodNotes far a long time. There are already great projects, likeXournal++ and Whitebophir. But, they do not include the extent of possibilities to flexible host, collaborate and structuring the notes I have wished for.
Recently, I was thinking about the exact requirements I wanted for such a whiteboard:
Real time synchronization (cloud storage)
Authentication/account infrastructure (to invite and collaborate on one whiteboard)
Adding/Removing ppl to a whiteboard
Reliable hosting (when having cloud storage, I don't want to trust a one-man project to continue hosting. And a lot of ppl won’t self-host.)
Structuring whiteboards in categories
Viewing history and display which part has been drawn by which person
Annotating other whiteboards with new layers
Hosting for media like PDF's and images
Looking at this list, Matrix was such an obvious choice. I could comment every point but basically with: "A whiteboard should be a Matrix room" everything is said.
TheBoard (probably not the final name) is exactly that. The frontend is not done yet, but already in an okay looking and usable state.
Before trying it out: It takes really long to log in with an account with lots of rooms. So, I highly recommend to NOT use your main Matrix account.
Additionally, it is necessary to tag rooms as whiteboards. (really un-intuitive UX that will be improved) But for now the + button needs to be pressed and a (empty (not necessary but recommended) AND UNENCRYPTED) room needs to be selected.
UPDATE I just (on Friday) finished initial spaces support to categorize the whiteboard in notebooks (aka spaces). They can only be create within a matrix client that supports spaces. But they will be displayed properly in TheBoard. (see screenshot)
Any problems, ideas and feedback is highly welcome as a github issue or in the matrix channel #TheBoard:matrix.org.
TLDR:
This project is whiteboard (similar to OneNote) which is
using Matrix as its backend. All your drawings are stored in matrix rooms
on your matrix server and are accessible to anyone who is invited.
Try It out at: https://toger5.github.io/TheBoard As always: use at your own Risk
Join the matrix channel at: #TheBoard:matrix.org
Github: https://github.com/toger5/TheBoard
Thanks to the awesome https://serverstats.nordgedanken.dev project by MTRNord my small server version history graph now contains more of the matrix fediverse: We went from ~3000 to over 5000 active visible homeservers on https://graph.settgast.org/
Two superb projects combining forces! I've long been a fan of Chris' graphs for tracking the growth of the server ecosystem.
Famedly in the news! https://e-health-com.de/details-news/messenger-am-uk-frankfurt-ermoeglicht-simultane-ueberfuehrung-von-chats-in-die-patientendokumentation/