github etkecc/ketesa v1.1.0
Ketesa v1.1.0

8 hours ago

We've been busy since v1.0.0, and we're excited to share what landed in this release. There's a mix of new features, a solid round of bug fixes, and some behind-the-scenes improvements!


✨ New Features

Event Lookup Dialog in Room Messages
The Room Messages viewer got a big upgrade. Every event now shows its event ID, and clicking it opens a new Event Lookup Dialog — a recursive explorer that lets you follow event references down the chain. You can also navigate to any event by ID directly from the dialog. Super handy for debugging federation issues or just digging into what actually happened in a room.

Way more event types in the Room Messages filter
While we were in there, we expanded the list of supported Matrix event types from about 13 to 60+. State events, space events, polls, call signaling, key verification, account data — it's all there now.

MAS user list: sorting is here!
If your homeserver uses Matrix Authentication Service, you can now sort the user list by fields like creation date. Under the hood we query the Synapse API and merge the results — MAS users now also carry Synapse-side flags (guest, shadow-banned, erased, suspended, deactivated) so everything shows up consistently.

Empty results are more useful than ever!
Previously empty results pages were inconsistent across the project (some resources used our nice-and-shiny custom empty state, others just a text "No %something% found"). We unified the approach across the app, so now you will always see the custom empty state — easy on the eyes and actually helpful!

Bonus: Now the action buttons are always visible on empty state pages (e.g., event lookup on reported events)!

Smarter protocol detection on the login page
Ketesa now auto-detects whether to use http:// or https:// when you type a homeserver URL. Local addresses (localhost, 127.0.0.1, ::1) get http://; everything else gets https://. That should help with intranet deployments!

Donate page
We added a "Support Ketesa Development" page — accessible from the user menu, just below the language selector. If Ketesa has been useful to you or your community, this is the place to show some love! It links to our GitHub Sponsors page. Every contribution genuinely helps us keep the project going. ❤️


🐛 Bug Fixes

Logout no longer wipes your homeserver config (#1110)
After a logout, Ketesa was clearing all persisted config — including your homeserver URL — which meant you had to re-enter it every time. Now it only clears session-specific runtime state, and your custom options survive the logout as expected.

MAS bulk deactivate was broken
Bulk-deactivating users via MAS wasn't working. It is now.

User created_at timestamps were wrong for MAS users
The created_at field was being mapped and normalized inconsistently between MAS and Synapse, leading to wrong or blank dates. Fixed across the board.

User delete button had an incorrect React context
Under certain conditions, the delete user button was failing due to a context mismatch. Fixed.

Avatar loading was inconsistent on mobile
Avatars weren't loading reliably in mobile layouts. Fixed.

"Restricted" join rule was missing from translations
The "Restricted" room join rule wasn't translated in several locales. Fixed.


🔧 Under the Hood

Migrated the test suite from Jest to Vitest
No user-visible impact, but we moved the entire test infrastructure to Vitest. It's faster, aligns better with our Vite build setup, and we added more utility tests while we were at it.


Thanks for using Ketesa! As always, if you run into issues or have ideas, share them in #ketesa:etke.cc room or open an issue at github.com/etkecc/ketesa.

Happy administrating! 🚀

What's Changed

Full Changelog: v1.0.0...v1.1.0

Don't miss a new ketesa release

NewReleases is sending notifications on new releases.