Skip to content

Releases: etkecc/ketesa

Ketesa v1.1.0

07 Apr 16:08
14cc4aa

Choose a tag to compare

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

Ketesa v1.0.0

03 Apr 10:18
47062d8

Choose a tag to compare

We are thrilled to announce Ketesa v1.0.0 — a landmark release that marks a new chapter for what was once known as Synapse Admin.

Ketesa is a fully-featured, mobile-friendly admin interface for Matrix homeservers powered by Synapse. It is a direct drop-in replacement for Synapse Admin: no configuration changes required — just swap the image or URL and you're running Ketesa.

Announcement blog post


A new name

The project has a new identity: Ketesa. The repository, Docker images, and configuration keys have all been updated. The legacy cc.etke.synapse-admin config key in /.well-known/matrix/client continues to work alongside the new cc.etke.ketesa key, so existing deployments keep working without changes.

  • Hosted: https://admin.etke.cc
  • Docker: ghcr.io/etkecc/ketesa:latest
  • Static release: ketesa.tar.gz (root) / ketesa-subpath-admin.tar.gz (/admin subpath)

What's new

Full redesign

The entire interface has been redesigned from the ground up: a cleaner layout, a recolored dark theme, and a more consistent visual identity across all pages. The user page, reports section, and room management views have all received focused styling passes.

Mobile-first UI

Ketesa is now fully responsive. The mobile layout has been comprehensively optimized: better footer positioning, a full-screen entrypoint loader on narrow viewports, corrected font asset handling, and consistent use of responsive grid breakpoints throughout.

Matrix Authentication Service (MAS) — full integration

Ketesa now has deep, first-class support for homeservers running MAS:

  • Manage all session types: personal access tokens, browser sessions, OAuth2 sessions, compatibility sessions
  • View and manage linked email addresses
  • View upstream OAuth provider links
  • Manage MAS policy data (consent records)
  • Create new users through MAS
  • Registration tokens now expose created_at, last_used_at, revoked_at and support one-click revoke/unrevoke
  • Synapse and MAS versions are shown in the user menu
  • Federated users are handled correctly — no unnecessary data is sent to MAS

User management

  • Shadow banning — silence a user without alerting them
  • Login as user — impersonate any local user (Synapse-only)
  • Reset password — one-click password reset from the user view
  • Find User — locate a user account quickly
  • Device management — create new devices, rename existing ones, bulk-remove selected devices; configurable table columns including user agent and dehydrated device flags
  • Allow cross-signing reset — unblock a user's cross-signing key reset
  • Renew account validity — extend an account's validity period
  • Control Matrix Client-Server API admin flags — promote or demote users via the C-S API
  • System-managed users filter — hide or show bridge bots and appservice-managed accounts
  • User list migrated to v3 API
  • User redaction with live status — see deletion progress in real time
  • Cumulative stats — total joined rooms and sent invites shown on the user page
  • Improved filters — all boolean user filters now use nullable tri-state inputs

Room management

  • Block/Unblock room — prevent or restore access to a room
  • Purge History — delete room history up to a point in time
  • Room Messages tab — browse messages with filters and jump-to-date navigation
  • Room Hierarchy tab — visible only on Spaces; browse and navigate the space tree
  • Join user to a room — add any local user to a room directly
  • Room delete with live status — watch deletion progress as it happens
  • Database room stats — per-room database size and event counts
  • Scheduled tasks list — view pending Synapse background tasks

Media management

  • Quarantine All buttons on both the user media list and the room media list
  • Purge media notifications now include the count of actually removed items

Performance & internationalization

  • Translations are now lazy-loaded with per-locale code splitting — only the active language is downloaded
  • <html lang> and dir attributes are set dynamically, enabling correct RTL rendering
  • Outdated upstream language packages replaced with local base.ts files for better maintainability
  • Japanese translation corrected and improved

Authentication & login

  • The /auth-callback OIDC redirect handler is now a separate build entrypoint (faster load, smaller bundle)
  • A dedicated subpath-admin entrypoint is published for /admin-path deployments
  • The login form now supports .well-known delegation for the homeserver URL
  • Entering a homeserver URL without a scheme automatically prepends https://
  • A descriptive text block has been added to the login form

Infrastructure & deployment

  • IPv6 homeserver support — admin API URLs with IPv6 addresses are handled correctly
  • Separate Dockerfile for subpath-admin deployments
  • Docker labels added to all published images
  • REUSE compliance — GitHub Action added to enforce license metadata on every PR

Documentation

  • New docs/apis.md — comprehensive tracking of all implemented Synapse and MAS Admin API endpoints
  • Full reverse proxy documentation, including Nginx configuration snippets for Docker deployments at both root path and /admin subpath
  • Expanded documentation portal covering all major features

Community contributors

A big thank you to @cy1der for two contributions that made it into this release: the initial implementation of MAS registration token management (#1067) and the Nginx configuration snippets for Docker deployments (#1083).


Upgrading

Ketesa is a zero-configuration drop-in replacement for Synapse Admin.

Docker:

ghcr.io/etkecc/ketesa:latest

or on Docker Hub: etkecc/ketesa:latest

CDN / hosted: https://admin.etke.cc

Static files: download ketesa.tar.gz from the release assets and replace your existing dist/ directory.

Packages: matrix-docker-ansible-deploy, Nix / NixOS, Arch Linux AUR, IPFS, and other packages updates will be reflected in the README.md later

What's Changed

New Contributors

Full Changelog: v0.11.4-etke54...v1.0.0

v0.11.4-etke54

08 Mar 12:37
6eeaa9a

Choose a tag to compare

This release also includes the usual dependencies updated and also commits from upstream; that's why a few upstream versions were skipped and only v0.11.4 is used for release

What's Changed

Full Changelog: v0.11.1-etke53...v0.11.4-etke54

v0.11.1-etke53 BREAKING

03 Feb 20:38
5cfb734

Choose a tag to compare

This release contains breaking changes in the Docker image specifically; see the explanation below

  • User badges: new Federated User badge
  • Improved user tables across the app (i.e., Room Members tab)
  • Improved media quarantine handling, including automatic quarantined media bypass
  • Add new User -> Memberships tab (ref)
  • Improve performance of all have-many relations (e.g., User -> Joined Rooms, Room -> Members, etc.) (ref)
  • Improve error messages (return actual errors on actions like publishing a room in the directory)
  • Fix incorrect handling of empty responses from API
  • Custom Menu: add i18n support
  • Fix loading of Persian translation
  • Add all missing translations for all supported locales, including etke.cc components
  • Set page titles for all entities, add avatars to rooms' and users' page titles
  • Set document page title based on app page (sync page and document titles)
  • Add bulk actions to User -> (Joined) Rooms table (has a bug with caching)
  • Improved Bulk CSV import: more relaxed rules for boolean fields

BREAKING CHANGES in Docker images

Synapse Admin now runs in a rootless container, and because of that, paths and port have been changed.

Port

  • Was: 80
  • Now: 8080

Path (inside container)

  • Was: /app
  • Now: /home/sws/public and symlink /var/public

The changes are reflected in the MDAD PR, so once a new version is released, MDAD will handle the changes automatically

Full Changelog: v0.11.1-etke52...v0.11.1-etke53

v0.11.1-etke52

09 Jan 08:41
a949492

Choose a tag to compare

This is a dependency update release with a security vulnerability fix of one of the dependencies: React Router SSR XSS in ScrollRestoration

Full Changelog: v0.11.1-etke51...v0.11.1-etke52

v0.11.1-etke51

06 Jan 09:44
b7d8cce

Choose a tag to compare

  • Fix rooms table encryption field sorting
  • Add creator and join rules columns to the room list
  • Localized date fields

What's Changed

Full Changelog: v0.11.1-etke50...v0.11.1-etke51

v0.11.1-etke50

04 Dec 18:53
4568de4

Choose a tag to compare

  • Improved OIDC Auth support #907
  • Add Public Rooms and Empty Rooms filters to the rooms list #945
  • Allow restoring system-managed users #956

What's Changed

New Contributors

Full Changelog: v0.11.1-etke49...v0.11.1-etke50

v0.11.1-etke49

23 Oct 15:40
3a9fa36

Choose a tag to compare

v0.11.1-etke48

02 Oct 11:09
e0a7ac2

Choose a tag to compare

  • Improved Login page:
    • better handling of different ways to restrict homeserver URL field
    • show SSO button only when homeserver supports SSO login
    • mobile-friendly UI
  • Do not logout on 403 errors automatically (e.g., when setting a password for an external auth provider-managed user)
  • External Auth Provider-compatible mode
  • New Ukrainian localization

v0.11.1-etke47

03 Sep 11:49
07d6d60

Choose a tag to compare

Fix homeserver url selection on login page

this release fixed regression from the previous v0.11.1-etke46 release