2026-09-26 15:11:50 -04:00
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"reviewed": "2026-09-26",
|
2026-09-26 15:11:50 -04:00
|
|
|
|
"clients": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "Lotus Chat",
|
|
|
|
|
|
"sub": "chat.lotusguild.org<br>Our Cinny fork"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "Cinny",
|
|
|
|
|
|
"sub": "cinny.in<br>Official"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "Element X",
|
|
|
|
|
|
"sub": "iOS & Android"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "FluffyChat",
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"sub": "Android, iOS, Web & Linux"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "Commet",
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"sub": "Android / Win / Linux / Web"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "Element",
|
|
|
|
|
|
"sub": "Web & Desktop"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "Nheko",
|
|
|
|
|
|
"sub": "Desktop only"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"sections": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"title": "Platform",
|
|
|
|
|
|
"rows": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "iOS",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Android",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Desktop app",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "Cinny Desktop"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "iOS build runs on Apple Silicon Macs (no Windows/Linux)"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"note": "Windows & Linux (macOS: build from source only)"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Web browser",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "app.commet.chat (v0.5.0)"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Performance",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"text": "Light"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"text": "Light"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"text": "Very fast",
|
|
|
|
|
|
"note": "Sliding Sync"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"text": "Moderate"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"text": "Moderate"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"text": "Heavy",
|
|
|
|
|
|
"note": "Electron / JS"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"text": "Light",
|
|
|
|
|
|
"note": "Native C++"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"title": "Desktop App",
|
|
|
|
|
|
"rows": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Native rich notifications (click→open, inline reply)",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "Linux: click opens chat, Mark-as-read/Mute actions; no inline reply"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "Windows & Linux: click-to-open, inline reply, call accept/decline"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "Linux inline reply (D-Bus), macOS quick reply, click-to-open"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Windows Jump List (recent rooms)",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Taskbar + volume-flyout call controls",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Focus Assist → auto Do-Not-Disturb",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Stay awake during calls",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "wakelock during (experimental) calls"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Recursive folder drag-drop upload",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"title": "Security & Encryption",
|
|
|
|
|
|
"rows": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "E2EE",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Vodozemac encryption<small>stronger crypto track record</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "Rust crypto (matrix-sdk-crypto-wasm) via js-sdk"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "Rust crypto (matrix-sdk-crypto-wasm) via js-sdk"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "Rust SDK"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "dart-sdk"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "dart-sdk"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "Rust crypto (matrix-sdk-crypto-wasm)"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Device verification",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "SAS emoji, cross-client requests show inline card"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"note": "own devices only (emoji + recovery key)"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"title": "Voice & Video",
|
|
|
|
|
|
"rows": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Voice & video calls",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "rooms & DMs, group calls,<br>screenshare via Element Call"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "1:1 + group via embedded Element Call"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"note": "1:1 & group via embedded Element Call"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"note": "experimental setting, DMs only (legacy 1:1 WebRTC)"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "1:1 WebRTC; voice channels via MatrixRTC + LiveKit; E2EE experimental"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "1:1 only, legacy VoIP; Linux builds only"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Screenshare",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "via Element Call; fullscreen button,<br>independent audio mute"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "via Element Call embed"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "no",
|
|
|
|
|
|
"note": "can view others' screenshares, cannot start one"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "experimental 1:1 calls, mobile & web only"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "desktop, Android & browser; 1:1 and voice channels"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"note": "Linux builds only (1:1 calls; XDG portal)"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Noise suppression<small>filter background noise from mic</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "3 tiers: off / browser-native /<br>on-device ML (RNNoise, Speex,<br>DTLN, DeepFilterNet 3),<br>works on self-hosted SFU"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "browser-native<br>via Element Call"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "browser-native"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "WebRTC-native"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "browser-native (WebRTC)"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"note": "browser-native (WebRTC noiseSuppression toggle)"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Push-to-Talk<small>hold key to transmit</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "configurable hold key,<br>PTT badge in call bar;<br>M = push-to-deafen;<br>system-wide on Windows desktop"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "hold Space while muted (Element Call built-in); no configurable key"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "hold Space while muted in Element Call; no configurable key"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "AFK auto-mute<small>silence mic after idle timeout</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "1–30 min timeout,<br>toast notification"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Voice channel user limit<small>admin-set max participants</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "per-room cap,<br>server-enforced<br>for all clients"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Call join/leave sounds<small>cue when others come & go</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "3 styles,<br>Web Audio synth"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "via Element Call (calls up to 8 people)"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "via Element Call"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "voice channels play join/leave cues for other participants"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "Element Call (calls up to 8 people)"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Group calls",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "via Element Call embed"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "via Element Call embed"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"note": "via embedded Element Call"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"note": "MatrixRTC voice channels; E2EE experimental (v0.5.0)"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "no",
|
|
|
|
|
|
"note": "1:1 only; no MatrixRTC/Element Call or Jitsi"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Incoming call notification<small>ring + Answer/Decline</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "DMs & group chats;<br>ring tone, auto-dismiss"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "rings for DM calls (Answer/Reject); silent prompt for group calls"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "native push"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "experimental"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"note": "ringing toast with Accept/Decline (web & desktop)"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "ringtone (selectable) + Accept/Decline bar"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"title": "Core Features",
|
|
|
|
|
|
"rows": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Spaces",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "best-in-class sub-space nav"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "best-in-class sub-space nav"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "dedicated spaces tab,<br>full management"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "Discord-like categories"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "sub-spaces clunky"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "limited"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Threads",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "side panel + Slack-style per-thread notifications"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "basic, no dedicated view"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "Labs flag"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "thread view since v2.3.0"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "since v0.11.0"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Polls",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "create, vote & display;<br>single or multiple choice"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "no",
|
|
|
|
|
|
"note": "not rendered (no m.poll support)"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "create, vote & end"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "added v2.3.0"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "added v0.4.2"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Voice messages<small>record & play</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "record & play, E2EE;<br>0.75×/1×/1.5×/2× speed"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "playback only"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "record, play, variable speed,<br>reply with voice"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "record & play,<br>pause support"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "playback confirmed;<br>recording unclear"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "playback only (inline audio player); no recording"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Pinned messages",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "dedicated pins view"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "pin/unpin + pinned banner"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Custom emoji & stickers",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "best-in-class"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "bulk upload, Signal packs"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "sometimes shows mxc:// URLs"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "GIF search / picker",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "Giphy, Terminal TDS themed,<br>click-outside to close"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "privacy proxy,<br>uploads to homeserver"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Message search (encrypted)",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "local cache scan; load-more<br>buttons extend history per room"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "server search only;<br>no E2EE support"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"note": "per-room; downloads & decrypts history client-side"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "client-side; auto-fetches +<br>decrypts history during search"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "desktop only, not web"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "local DB scan"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Widgets",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "room widgets; asks before a widget may read or send in the room"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "added v0.5.0 (Widgets API, native runner on Android/Windows)"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "listed in room header, open externally"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"title": "UX & Extras",
|
|
|
|
|
|
"rows": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Multi-account",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "account switcher; multi-account push since v2.6.0"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no",
|
|
|
|
|
|
"note": "CLI profiles only"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Image captions<small>(text + image as one event)</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "caption field on<br>image & video upload"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "shows captions from other clients; cannot send"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "scrollable captions<br>on media (v26.04.2)"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "shows captions from other clients; cannot send"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Discord-like UI",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "best-in-class for web"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no",
|
|
|
|
|
|
"note": "WhatsApp/Telegram style"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"note": "Discord-like layout"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Shared calendars & albums",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "unique to Commet"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Night Light / Blue Light Filter<small>warm overlay, adjustable intensity</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "5–80% intensity slider,<br>Settings → Appearance"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Animated chat backgrounds<small>CSS-only, GPU-accelerated</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "5 animated wallpapers (rain,<br>stars, grid pulse, aurora,<br>fireflies); pause toggle"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Deleted message visibility<small>(redacted events)</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "\"Message deleted\" with reason<br>if provided"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "hidden by default; shown with \"Show Hidden Events\""
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "\"Message deleted\"<br>placeholder shown"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "shows redaction notice"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "no",
|
|
|
|
|
|
"note": "redacted events are hidden from the timeline"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "\"Message deleted\"<br>placeholder shown"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "shows redaction notice"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Location sharing",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "map embed view +<br>static share button"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "shows received locations; cannot send"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "live & static,<br>map rendering"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "basic static"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Message forwarding",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "forward to any room"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "Forward action; multi-room on Android"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "no"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Per-message read receipts<small>who read each message</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "avatar pill below message,<br>click for list + timestamps"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "'Read Receipts' in message menu lists readers"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "avatar thumbnails"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "avatar row below message"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Who reacted<small>see who reacted with each emoji</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "hover tooltip with names;<br>right-click for full avatar modal"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "hover tooltip + 'View Reactions' viewer"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "long-press reaction for summary sheet"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "long-press reaction"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"note": "hover tooltip lists reactors"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Edit history viewer<small>see all prior versions of an edited message</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "click \"(edited)\" label → modal<br>with all versions + timestamps"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no",
|
|
|
|
|
|
"note": "label shown, not clickable"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "no",
|
|
|
|
|
|
"note": "shows \"(edited)\" label only"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "no",
|
|
|
|
|
|
"note": "only an 'Edited' marker"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Custom status message<small>shown below username</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "emoji picker, auto-clear timer<br>(30 min – 7 days), 64-char limit"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "emoji + text status (needs server support)"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "Set status; shown under DM header & in profile"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "shown under name in user panels/profile"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "Labs; needs homeserver support (MSC4429)"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "shown next to sender name in timeline & in profile"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Online presence tracking<small>idle/away auto-detection</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "online on start, idle after 10 min,<br>unavailable when tab hidden,<br>offline on close; hide-status toggle"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"note": "shows others' status; no idle detection"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"note": "reports own presence; doesn't show others'"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "basic online/offline only"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"note": "sets 'unavailable' 15s after the app loses focus; no input-idle timer"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"note": "3-min idle → away; no hide toggle"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"note": "auto: unavailable ~30 s after losing focus"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Media Gallery<small>browse room images/videos/files</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "right-side drawer;<br>Images/Videos/Files tabs"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "\"Media and files\" browser in room info"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "Gallery & Files tabs in chat search"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "Files panel lists room attachments; no grid gallery"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Sidebar room filter<small>filter by name in real time</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "Home & DMs tabs"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "room list search + filter chips"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "search field filters chat list by name + filter chips"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Favorite rooms<small>starred section in sidebar</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "m.favourite tag, syncs<br>across devices"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "Favourites filter chip (no separate section)"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "favourite (pin) floats to top; tag filter chips"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "'Favorites' section (v0.5.0)"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "favourites section"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "'Favourites' tag in community sidebar"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Invite link + QR code",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "matrix.to URL + QR code<br>in invite modal & room settings"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "share room link; no QR"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "share invite link + QR codes"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "Share room dialog: matrix.to link + QR code"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Custom notification sounds<small>per-category sound selector</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "per-category sound selector; ▶ preview"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "iOS: choose alert tone (global)"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "per room, not per category"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Notification quiet hours<small>silence notifs in a time window</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "silence all notifs in a time window; overnight support"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Room sort order<small>sort sidebar rooms by activity, name, or unread</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "Recent / A→Z / Unread First"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "sort by activity only"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"note": "activity only (favourites first, low priority last)"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "manual drag-reorder; no sort selector"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "Activity, A-Z or Unread-first"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "by importance/unread or alphabetical"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Push notifications",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"note": "OS notifications while the app is open; no background push yet"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "part",
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"note": "only while the tab/app is open; optional email"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "desktop"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Export room history<small>download messages as file</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "txt/json/html, date range,<br>E2EE-aware"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "has export"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Message scheduling<small>send later with datetime picker</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "MSC4140, datetime picker,<br>cancel tray above composer"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "no"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Message bookmarks / saved messages",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "right-click bookmark,<br>sidebar panel, syncs across devices"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "no"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Collapsible long messages<small>auto-collapse >20 lines</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "\"Read more\" toggle,<br>threshold configurable"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "collapses >25 lines (configurable), Show more/less"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Inline GIF preview<small>Giphy / Tenor links auto-embed</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "via homeserver proxy,<br>no direct CDN contact"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Presence avatar border ring<small>colored ring shows online status</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "green/yellow/red ring;<br>timeline, members, mentions"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Room emoji prefix<small>🎮 renders larger in sidebar</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "1.15× size; emoji picker<br>in all name inputs"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "leading emoji becomes the room icon when no avatar"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "Quick emoji reactions on hover<small>1-click react, no menu needed</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "3 recent emoji in hover bar;<br>dismisses emoji picker"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "hover bar shows up to 4 recent reactions, 1-click"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "hover bar shows recent reactions, 1-click"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "In-app notification toasts<small>TDS-styled, when window focused</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "slides in bottom-right;<br>4 s auto-dismiss, click to jump"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"feature": "On-device message translation<small>read foreign messages in your language</small>",
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "yes",
|
|
|
|
|
|
"note": "100% on-device browser AI;<br>works in E2EE rooms, no cloud;<br>Chromium desktop & Lotus app"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2026-09-26 16:53:07 -04:00
|
|
|
|
"mark": "part",
|
|
|
|
|
|
"note": "iOS only (Apple Translation)"
|
2026-09-26 15:11:50 -04:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"mark": "no"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
2026-09-26 16:53:07 -04:00
|
|
|
|
}
|