feat: add Lotus Chat column and official Cinny comparison to landing page
Lint / Shell (shellcheck) (push) Successful in 9s
Lint / JS (eslint) (push) Successful in 6s
Lint / Python (ruff) (push) Successful in 5s
Lint / Python deps (pip-audit) (push) Successful in 33s
Lint / Secret scan (gitleaks) (push) Successful in 5s

Add chat.lotusguild.org as the featured Cinny fork column and cinny.in
as a second comparison column. Adds official Cinny card in Other
Clients section and updates table colspan to 8.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
root
2026-05-22 14:01:23 -04:00
parent 39764ff478
commit dc8f588cb6
+72 -25
View File
@@ -281,7 +281,7 @@
table { table {
width: 100%; border-collapse: collapse; width: 100%; border-collapse: collapse;
font-size: 0.78rem; min-width: 640px; font-size: 0.78rem; min-width: 760px;
} }
thead tr { border-bottom: 1px solid rgba(152,0,0,0.15); } thead tr { border-bottom: 1px solid rgba(152,0,0,0.15); }
@@ -465,7 +465,7 @@
/* Table */ /* Table */
.scroll-hint { display: block; } .scroll-hint { display: block; }
table { font-size: 0.71rem; min-width: 520px; } table { font-size: 0.71rem; min-width: 620px; }
th { padding: 8px 5px; font-size: 0.6rem; } th { padding: 8px 5px; font-size: 0.6rem; }
th:first-child { min-width: 100px; padding-left: 10px; } th:first-child { min-width: 100px; padding-left: 10px; }
td { padding: 7px 5px; } td { padding: 7px 5px; }
@@ -497,7 +497,7 @@
h1 { font-size: 1.3rem; } h1 { font-size: 1.3rem; }
.logo { width: 84px; height: 84px; } .logo { width: 84px; height: 84px; }
.card { padding: 18px 12px; } .card { padding: 18px 12px; }
table { font-size: 0.66rem; min-width: 480px; } table { font-size: 0.66rem; min-width: 580px; }
th { font-size: 0.55rem; padding: 7px 4px; } th { font-size: 0.55rem; padding: 7px 4px; }
td { padding: 6px 4px; } td { padding: 6px 4px; }
td:first-child { font-size: 0.66rem; min-width: 90px; } td:first-child { font-size: 0.66rem; min-width: 90px; }
@@ -554,8 +554,8 @@
</a> </a>
</div> </div>
<p class="also-available"> <p class="also-available">
A custom Lotus Guild fork of Cinny with added features: DM calls with ring notification, GIF picker, draggable+resizable PiP call window, poll display &amp; voting, message forwarding, image/video captions, location sharing (map view + send), deleted message placeholders, and the Lotus Terminal design theme. Our Lotus Guild fork of Cinny adds: incoming call ring + Answer/Decline (DMs &amp; group chats), GIF picker (Giphy), draggable+resizable picture-in-picture call window, poll display &amp; voting, message forwarding, image/video captions, location sharing (map view + send), deleted message placeholders, and the Lotus Terminal design theme.
Prefer the official client? Use <a href="https://cinny.in" target="_blank" rel="noopener">cinny.in</a> and set homeserver to <code style="font-size:0.8em;color:#e88;">matrix.lotusguild.org</code>. Prefer the unmodified upstream? <a href="https://cinny.in" target="_blank" rel="noopener">cinny.in</a> works with our homeserver &mdash; set it to <code style="font-size:0.8em;color:#e88;">matrix.lotusguild.org</code>.
</p> </p>
<div class="space-join"> <div class="space-join">
@@ -569,6 +569,22 @@
<div class="clients-section"> <div class="clients-section">
<h3>Other Clients</h3> <h3>Other Clients</h3>
<div class="client-group">
<p class="client-group-label">Web &amp; Desktop &mdash; Official Cinny</p>
<div class="client-cards">
<div class="client-card">
<div class="client-card-top">
<a href="https://cinny.in" target="_blank" rel="noopener" class="client-card-name">Cinny</a>
<div class="client-card-tags">
<span class="tag dim">Web</span>
<span class="tag dim">Desktop</span>
</div>
</div>
<p class="client-card-desc">The upstream open-source Cinny client. Same Discord-like UI and best-in-class space navigation as Lotus Chat, but without our custom additions (no GIF picker, no call ring notification, no PiP window, no message forwarding). Set homeserver to <code style="font-size:0.85em;color:#e88;background:rgba(152,0,0,0.08);padding:1px 5px;border-radius:4px;">matrix.lotusguild.org</code>.</p>
</div>
</div>
</div>
<div class="client-group"> <div class="client-group">
<p class="client-group-label">Mobile &mdash; iOS &amp; Android</p> <p class="client-group-label">Mobile &mdash; iOS &amp; Android</p>
<div class="client-cards"> <div class="client-cards">
@@ -592,17 +608,17 @@
<span class="tag dim">Android</span> <span class="tag dim">Android</span>
<span class="tag dim">Desktop</span> <span class="tag dim">Desktop</span>
<span class="tag dim">Web</span> <span class="tag dim">Web</span>
<span class="tag rust">Rust SDK</span> <span class="tag dim">Dart SDK</span>
<span class="tag warn">Calls Experimental</span> <span class="tag warn">Calls Experimental</span>
</div> </div>
</div> </div>
<p class="client-card-desc">Simple, beginner-friendly, fully cross-platform. Rust encryption (Vodozemac). Unique: supports image captions (text + image as one event). Voice/video calls are experimental &mdash; reliability varies by homeserver and platform.</p> <p class="client-card-desc">Simple, beginner-friendly, fully cross-platform. Dart SDK with Vodozemac encryption. Unique: supports image captions (text + image as one event). Voice/video calls are experimental &mdash; reliability varies by homeserver and platform.</p>
</div> </div>
</div> </div>
</div> </div>
<div class="client-group"> <div class="client-group">
<p class="client-group-label">Discord-like &mdash; Android, Windows &amp; Linux</p> <p class="client-group-label">Discord-like &mdash; Android, Windows, macOS &amp; Linux</p>
<div class="client-cards"> <div class="client-cards">
<div class="client-card"> <div class="client-card">
<div class="client-card-top"> <div class="client-card-top">
@@ -610,12 +626,13 @@
<div class="client-card-tags"> <div class="client-card-tags">
<span class="tag dim">Android</span> <span class="tag dim">Android</span>
<span class="tag dim">Windows</span> <span class="tag dim">Windows</span>
<span class="tag dim">macOS</span>
<span class="tag dim">Linux</span> <span class="tag dim">Linux</span>
<span class="tag beta">Beta</span> <span class="tag beta">Beta</span>
<span class="tag voice">Voice &amp; Video</span> <span class="tag voice">Voice &amp; Video</span>
</div> </div>
</div> </div>
<p class="client-card-desc">Most Discord-like client overall. Multi-account support, built-in GIF search (privacy proxy &mdash; uploads to homeserver), shared calendars &amp; photo albums, polls (v0.4.2), screenshare on browsers &amp; Android. Available on Android, Windows, Linux, Web, and macOS (Beta). Active development.</p> <p class="client-card-desc">Most Discord-like client overall. Multi-account support, built-in GIF search (privacy proxy &mdash; uploads to homeserver), shared calendars &amp; photo albums, polls, screenshare on browsers &amp; Android. Available on Android, Windows, macOS, Linux, and Web. Active development &mdash; iOS planned.</p>
</div> </div>
</div> </div>
</div> </div>
@@ -665,10 +682,11 @@
<thead> <thead>
<tr> <tr>
<th></th> <th></th>
<th class="ours">Cinny<small>chat.lotusguild.org<br>Lotus fork</small></th> <th class="ours">Lotus Chat<small>chat.lotusguild.org<br>Our Cinny fork</small></th>
<th>Cinny<small>cinny.in<br>Official</small></th>
<th>Element X<small>iOS &amp; Android</small></th> <th>Element X<small>iOS &amp; Android</small></th>
<th>FluffyChat<small>All platforms</small></th> <th>FluffyChat<small>All platforms</small></th>
<th>Commet<small>Android / Win / Linux</small></th> <th>Commet<small>Android / Win / macOS / Linux</small></th>
<th>Element<small>Web &amp; Desktop</small></th> <th>Element<small>Web &amp; Desktop</small></th>
<th>Nheko<small>Desktop only</small></th> <th>Nheko<small>Desktop only</small></th>
</tr> </tr>
@@ -676,10 +694,11 @@
<tbody> <tbody>
<!-- Platform --> <!-- Platform -->
<tr class="section-header"><td colspan="7">Platform</td></tr> <tr class="section-header"><td colspan="8">Platform</td></tr>
<tr> <tr>
<td>iOS</td> <td>iOS</td>
<td class="ours"><span class="no"></span></td> <td class="ours"><span class="no"></span></td>
<td><span class="no"></span></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
@@ -689,6 +708,7 @@
<tr> <tr>
<td>Android</td> <td>Android</td>
<td class="ours"><span class="no"></span></td> <td class="ours"><span class="no"></span></td>
<td><span class="no"></span></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
@@ -698,15 +718,17 @@
<tr> <tr>
<td>Desktop app</td> <td>Desktop app</td>
<td class="ours"><span class="yes"></span></td> <td class="ours"><span class="yes"></span></td>
<td><span class="yes"></span><small>Cinny Desktop</small></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
<td><span class="yes"></span><small>Win &amp; Linux</small></td> <td><span class="yes"></span><small>Win, macOS &amp; Linux</small></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
</tr> </tr>
<tr> <tr>
<td>Web browser</td> <td>Web browser</td>
<td class="ours"><span class="yes"></span></td> <td class="ours"><span class="yes"></span></td>
<td><span class="yes"></span></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
@@ -716,6 +738,7 @@
<tr> <tr>
<td>Performance</td> <td>Performance</td>
<td class="ours">Light</td> <td class="ours">Light</td>
<td>Light</td>
<td>Very fast<small>Sliding Sync</small></td> <td>Very fast<small>Sliding Sync</small></td>
<td>Moderate</td> <td>Moderate</td>
<td>Moderate</td> <td>Moderate</td>
@@ -724,7 +747,7 @@
</tr> </tr>
<!-- Security --> <!-- Security -->
<tr class="section-header"><td colspan="7">Security &amp; Encryption</td></tr> <tr class="section-header"><td colspan="8">Security &amp; Encryption</td></tr>
<tr> <tr>
<td>E2EE</td> <td>E2EE</td>
<td class="ours"><span class="yes"></span></td> <td class="ours"><span class="yes"></span></td>
@@ -733,19 +756,22 @@
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
<td><span class="yes"></span></td>
</tr> </tr>
<tr> <tr>
<td>Rust SDK (Vodozemac)<small>stronger crypto track record</small></td> <td>Vodozemac encryption<small>stronger crypto track record</small></td>
<td class="ours"><span class="no"></span><small>js-sdk</small></td> <td class="ours"><span class="no"></span><small>js-sdk</small></td>
<td><span class="yes"></span></td> <td><span class="no"></span><small>js-sdk</small></td>
<td><span class="yes"></span></td> <td><span class="yes"></span><small>Rust SDK</small></td>
<td><span class="yes"></span></td> <td><span class="yes"></span><small>dart-sdk</small></td>
<td><span class="yes"></span><small>dart-sdk</small></td>
<td><span class="no"></span><small>js-sdk, migrating</small></td> <td><span class="no"></span><small>js-sdk, migrating</small></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
</tr> </tr>
<tr> <tr>
<td>Device verification</td> <td>Device verification</td>
<td class="ours"><span class="part">~</span><small>requests may show as<br>"Unsupported message"</small></td> <td class="ours"><span class="part">~</span><small>requests may show as<br>"Unsupported message"</small></td>
<td><span class="part">~</span><small>cross-client requests<br>may show unsupported</small></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
@@ -754,10 +780,11 @@
</tr> </tr>
<!-- Calling --> <!-- Calling -->
<tr class="section-header"><td colspan="7">Voice &amp; Video</td></tr> <tr class="section-header"><td colspan="8">Voice &amp; Video</td></tr>
<tr> <tr>
<td>Voice &amp; video calls</td> <td>Voice &amp; video calls</td>
<td class="ours"><span class="yes"></span><small>rooms &amp; DMs, group calls,<br>screenshare via Element Call</small></td> <td class="ours"><span class="yes"></span><small>rooms &amp; DMs, group calls,<br>screenshare via Element Call</small></td>
<td><span class="part">~</span><small>Element Call embed;<br>no ring notification</small></td>
<td><span class="yes"></span><small>MatrixRTC</small></td> <td><span class="yes"></span><small>MatrixRTC</small></td>
<td><span class="part">~</span><small>experimental, varies<br>by homeserver</small></td> <td><span class="part">~</span><small>experimental, varies<br>by homeserver</small></td>
<td><span class="part">~</span><small>1:1 + group,<br>no E2EE voice rooms</small></td> <td><span class="part">~</span><small>1:1 + group,<br>no E2EE voice rooms</small></td>
@@ -767,15 +794,17 @@
<tr> <tr>
<td>Screenshare</td> <td>Screenshare</td>
<td class="ours"><span class="yes"></span><small>via Element Call embed</small></td> <td class="ours"><span class="yes"></span><small>via Element Call embed</small></td>
<td><span class="yes"></span><small>via Element Call embed</small></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
<td><span class="part">~</span><small>partial</small></td> <td><span class="yes"></span><small>XDG portals &amp; native</small></td>
</tr> </tr>
<tr> <tr>
<td>Group calls</td> <td>Group calls</td>
<td class="ours"><span class="yes"></span><small>via Element Call embed</small></td> <td class="ours"><span class="yes"></span><small>via Element Call embed</small></td>
<td><span class="yes"></span><small>via Element Call embed</small></td>
<td><span class="yes"></span><small>MatrixRTC</small></td> <td><span class="yes"></span><small>MatrixRTC</small></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
<td><span class="part">~</span><small>no E2EE voice rooms</small></td> <td><span class="part">~</span><small>no E2EE voice rooms</small></td>
@@ -784,7 +813,8 @@
</tr> </tr>
<tr> <tr>
<td>Incoming call notification<small>ring + Answer/Decline</small></td> <td>Incoming call notification<small>ring + Answer/Decline</small></td>
<td class="ours"><span class="yes"></span><small>DM rooms; ring tone,<br>30s auto-dismiss</small></td> <td class="ours"><span class="yes"></span><small>DMs &amp; group chats;<br>ring tone, auto-dismiss</small></td>
<td><span class="no"></span></td>
<td><span class="yes"></span><small>native push</small></td> <td><span class="yes"></span><small>native push</small></td>
<td><span class="part">~</span><small>experimental</small></td> <td><span class="part">~</span><small>experimental</small></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
@@ -793,11 +823,12 @@
</tr> </tr>
<!-- Core features --> <!-- Core features -->
<tr class="section-header"><td colspan="7">Core Features</td></tr> <tr class="section-header"><td colspan="8">Core Features</td></tr>
<tr> <tr>
<td>Spaces</td> <td>Spaces</td>
<td class="ours"><span class="yes"></span><small>best-in-class sub-space nav</small></td> <td class="ours"><span class="yes"></span><small>best-in-class sub-space nav</small></td>
<td><span class="part">~</span><small>viewing works;<br>management in progress</small></td> <td><span class="yes"></span><small>best-in-class sub-space nav</small></td>
<td><span class="yes"></span><small>dedicated spaces tab,<br>full management</small></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
<td><span class="yes"></span><small>Discord-like categories</small></td> <td><span class="yes"></span><small>Discord-like categories</small></td>
<td><span class="yes"></span><small>sub-spaces clunky</small></td> <td><span class="yes"></span><small>sub-spaces clunky</small></td>
@@ -806,6 +837,7 @@
<tr> <tr>
<td>Threads</td> <td>Threads</td>
<td class="ours"><span class="part">~</span><small>basic, no dedicated view</small></td> <td class="ours"><span class="part">~</span><small>basic, no dedicated view</small></td>
<td><span class="part">~</span><small>basic, no dedicated view</small></td>
<td><span class="part">~</span><small>Labs flag</small></td> <td><span class="part">~</span><small>Labs flag</small></td>
<td><span class="no"></span><small>shows as regular messages</small></td> <td><span class="no"></span><small>shows as regular messages</small></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
@@ -815,6 +847,7 @@
<tr> <tr>
<td>Polls</td> <td>Polls</td>
<td class="ours"><span class="yes"></span><small>display &amp; vote</small></td> <td class="ours"><span class="yes"></span><small>display &amp; vote</small></td>
<td><span class="part">~</span><small>display only</small></td>
<td><span class="yes"></span><small>create, vote &amp; end</small></td> <td><span class="yes"></span><small>create, vote &amp; end</small></td>
<td><span class="yes"></span><small>added v2.3.0</small></td> <td><span class="yes"></span><small>added v2.3.0</small></td>
<td><span class="yes"></span><small>added v0.4.2</small></td> <td><span class="yes"></span><small>added v0.4.2</small></td>
@@ -824,6 +857,7 @@
<tr> <tr>
<td>Voice messages<small>record &amp; play</small></td> <td>Voice messages<small>record &amp; play</small></td>
<td class="ours"><span class="part">~</span><small>playback only</small></td> <td class="ours"><span class="part">~</span><small>playback only</small></td>
<td><span class="part">~</span><small>playback only</small></td>
<td><span class="yes"></span><small>record, play, variable speed,<br>reply with voice</small></td> <td><span class="yes"></span><small>record, play, variable speed,<br>reply with voice</small></td>
<td><span class="yes"></span><small>record &amp; play,<br>pause support</small></td> <td><span class="yes"></span><small>record &amp; play,<br>pause support</small></td>
<td><span class="part">~</span><small>playback confirmed;<br>recording unclear</small></td> <td><span class="part">~</span><small>playback confirmed;<br>recording unclear</small></td>
@@ -833,6 +867,7 @@
<tr> <tr>
<td>Pinned messages</td> <td>Pinned messages</td>
<td class="ours"><span class="yes"></span></td> <td class="ours"><span class="yes"></span></td>
<td><span class="yes"></span></td>
<td><span class="yes"></span><small>dedicated pins view</small></td> <td><span class="yes"></span><small>dedicated pins view</small></td>
<td><span class="part">~</span><small>view only</small></td> <td><span class="part">~</span><small>view only</small></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
@@ -842,6 +877,7 @@
<tr> <tr>
<td>Custom emoji &amp; stickers</td> <td>Custom emoji &amp; stickers</td>
<td class="ours"><span class="yes"></span><small>best-in-class</small></td> <td class="ours"><span class="yes"></span><small>best-in-class</small></td>
<td><span class="yes"></span></td>
<td><span class="part">~</span></td> <td><span class="part">~</span></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
<td><span class="yes"></span><small>bulk upload, Signal packs</small></td> <td><span class="yes"></span><small>bulk upload, Signal packs</small></td>
@@ -853,6 +889,7 @@
<td class="ours"><span class="yes"></span><small>Giphy, Terminal TDS themed,<br>click-outside to close</small></td> <td class="ours"><span class="yes"></span><small>Giphy, Terminal TDS themed,<br>click-outside to close</small></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
<td><span class="no"></span></td>
<td><span class="yes"></span><small>privacy proxy,<br>uploads to homeserver</small></td> <td><span class="yes"></span><small>privacy proxy,<br>uploads to homeserver</small></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
@@ -860,6 +897,7 @@
<tr> <tr>
<td>Message search (encrypted)</td> <td>Message search (encrypted)</td>
<td class="ours"><span class="part">~</span><small>partial, some rooms broken</small></td> <td class="ours"><span class="part">~</span><small>partial, some rooms broken</small></td>
<td><span class="part">~</span><small>partial</small></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
<td><span class="part">~</span></td> <td><span class="part">~</span></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
@@ -872,16 +910,18 @@
<td><span class="no"></span></td> <td><span class="no"></span></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
<td><span class="no"></span></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
</tr> </tr>
<!-- UX / extras --> <!-- UX / extras -->
<tr class="section-header"><td colspan="7">UX &amp; Extras</td></tr> <tr class="section-header"><td colspan="8">UX &amp; Extras</td></tr>
<tr> <tr>
<td>Multi-account</td> <td>Multi-account</td>
<td class="ours"><span class="no"></span></td> <td class="ours"><span class="no"></span></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
<td><span class="no"></span></td>
<td><span class="part">~</span><small>supported but clunky</small></td> <td><span class="part">~</span><small>supported but clunky</small></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
@@ -890,6 +930,7 @@
<tr> <tr>
<td>Image captions<small>(text + image as one event)</small></td> <td>Image captions<small>(text + image as one event)</small></td>
<td class="ours"><span class="yes"></span><small>caption field on<br>image &amp; video upload</small></td> <td class="ours"><span class="yes"></span><small>caption field on<br>image &amp; video upload</small></td>
<td><span class="no"></span></td>
<td><span class="yes"></span><small>scrollable captions<br>on media (v26.04.2)</small></td> <td><span class="yes"></span><small>scrollable captions<br>on media (v26.04.2)</small></td>
<td><span class="yes"></span><small>unique feature</small></td> <td><span class="yes"></span><small>unique feature</small></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
@@ -899,6 +940,7 @@
<tr> <tr>
<td>Discord-like UI</td> <td>Discord-like UI</td>
<td class="ours"><span class="yes"></span><small>best-in-class for web</small></td> <td class="ours"><span class="yes"></span><small>best-in-class for web</small></td>
<td><span class="yes"></span></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
<td><span class="no"></span><small>WhatsApp/Telegram style</small></td> <td><span class="no"></span><small>WhatsApp/Telegram style</small></td>
<td><span class="yes"></span><small>most Discord-like overall</small></td> <td><span class="yes"></span><small>most Discord-like overall</small></td>
@@ -910,6 +952,7 @@
<td class="ours"><span class="no"></span></td> <td class="ours"><span class="no"></span></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
<td><span class="no"></span></td>
<td><span class="yes"></span><small>unique to Commet</small></td> <td><span class="yes"></span><small>unique to Commet</small></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
@@ -917,6 +960,7 @@
<tr> <tr>
<td>Deleted message visibility<small>(redacted events)</small></td> <td>Deleted message visibility<small>(redacted events)</small></td>
<td class="ours"><span class="yes"></span><small>"Message deleted" with reason<br>if provided</small></td> <td class="ours"><span class="yes"></span><small>"Message deleted" with reason<br>if provided</small></td>
<td><span class="no"></span><small>redacted messages hidden</small></td>
<td><span class="yes"></span><small>"Message deleted"<br>placeholder shown</small></td> <td><span class="yes"></span><small>"Message deleted"<br>placeholder shown</small></td>
<td><span class="yes"></span><small>shows redaction notice</small></td> <td><span class="yes"></span><small>shows redaction notice</small></td>
<td><span class="yes"></span><small>shows redaction notice</small></td> <td><span class="yes"></span><small>shows redaction notice</small></td>
@@ -926,6 +970,7 @@
<tr> <tr>
<td>Location sharing</td> <td>Location sharing</td>
<td class="ours"><span class="part">~</span><small>map embed view +<br>static share button</small></td> <td class="ours"><span class="part">~</span><small>map embed view +<br>static share button</small></td>
<td><span class="no"></span></td>
<td><span class="yes"></span><small>live &amp; static,<br>map rendering</small></td> <td><span class="yes"></span><small>live &amp; static,<br>map rendering</small></td>
<td><span class="part">~</span><small>basic static</small></td> <td><span class="part">~</span><small>basic static</small></td>
<td><span class="no"></span></td> <td><span class="no"></span></td>
@@ -935,6 +980,7 @@
<tr> <tr>
<td>Message forwarding</td> <td>Message forwarding</td>
<td class="ours"><span class="yes"></span><small>forward to any room</small></td> <td class="ours"><span class="yes"></span><small>forward to any room</small></td>
<td><span class="no"></span></td>
<td><span class="part">~</span><small>via share menu</small></td> <td><span class="part">~</span><small>via share menu</small></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
<td><span class="part">~</span></td> <td><span class="part">~</span></td>
@@ -944,6 +990,7 @@
<tr> <tr>
<td>Push notifications</td> <td>Push notifications</td>
<td class="ours"><span class="part">~</span><small>web push only</small></td> <td class="ours"><span class="part">~</span><small>web push only</small></td>
<td><span class="part">~</span><small>web push only</small></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
<td><span class="yes"></span></td> <td><span class="yes"></span></td>
@@ -956,7 +1003,7 @@
</div><!-- table-wrap --> </div><!-- table-wrap -->
<div class="security-note" style="margin:14px 16px 6px;"> <div class="security-note" style="margin:14px 16px 6px;">
<strong>Encryption architecture:</strong> Element X, FluffyChat, and Commet use <strong>Vodozemac</strong> &mdash; the Rust implementation of Matrix encryption &mdash; which has a stronger security track record than the older JavaScript SDK. Commet v0.4.2 added a web-compatible Vodozemac Dart binding. Cinny and Element Web/Desktop currently use <strong>matrix-js-sdk</strong>; Element is actively migrating to the Rust SDK via WebAssembly. Rust-based clients were not affected by historical js-sdk vulnerabilities. <strong>Encryption architecture:</strong> Element X uses the native <strong>matrix-rust-sdk</strong> with Vodozemac. FluffyChat and Commet use <strong>matrix-dart-sdk</strong>, which also wraps Vodozemac for its crypto &mdash; all three benefit from Vodozemac's stronger security track record over the older JavaScript SDK. Cinny and Element Web/Desktop currently use <strong>matrix-js-sdk</strong>; Element is actively migrating to the Rust SDK. Clients using Vodozemac were not affected by historical js-sdk vulnerabilities.
</div> </div>
<div class="legend"> <div class="legend">