diff --git a/landing/index.html b/landing/index.html index 87df2d9..b6fd38d 100644 --- a/landing/index.html +++ b/landing/index.html @@ -15,6 +15,7 @@ display: flex; align-items: center; justify-content: center; + padding: 20px 16px 40px; } body::before { @@ -34,9 +35,8 @@ position: relative; z-index: 1; text-align: center; - padding: 20px; - max-width: 560px; width: 100%; + max-width: 900px; } .logo { @@ -62,10 +62,7 @@ margin-bottom: 4px; } - h1 span { - color: #980000; - font-weight: 600; - } + h1 span { color: #980000; font-weight: 600; } .subtitle { font-size: 0.85rem; @@ -75,11 +72,14 @@ margin-bottom: 36px; } + /* ─── Cards / Panels ─── */ .card { - background: linear-gradient(145deg, rgba(22, 22, 22, 0.95), rgba(14, 14, 14, 0.98)); - border: 1px solid rgba(152, 0, 0, 0.2); + background: linear-gradient(145deg, rgba(22,22,22,0.95), rgba(14,14,14,0.98)); + border: 1px solid rgba(152,0,0,0.2); border-radius: 16px; padding: 32px; + max-width: 560px; + margin: 0 auto; } .card h2 { @@ -91,83 +91,58 @@ margin-bottom: 20px; } - .steps { - list-style: none; - text-align: left; - margin-bottom: 28px; - } + /* ─── Steps ─── */ + .steps { list-style: none; text-align: left; margin-bottom: 28px; } .steps li { display: flex; align-items: flex-start; gap: 14px; padding: 12px 0; - border-bottom: 1px solid rgba(255, 255, 255, 0.04); + border-bottom: 1px solid rgba(255,255,255,0.04); } .steps li:last-child { border-bottom: none; } .step-num { flex-shrink: 0; - width: 28px; - height: 28px; - background: rgba(152, 0, 0, 0.12); - border: 1px solid rgba(152, 0, 0, 0.35); + width: 28px; height: 28px; + background: rgba(152,0,0,0.12); + border: 1px solid rgba(152,0,0,0.35); border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - font-size: 0.8rem; - font-weight: 600; - color: #c44; - } - - .step-text { - padding-top: 3px; - font-size: 0.95rem; - line-height: 1.5; - color: #bbb; + display: flex; align-items: center; justify-content: center; + font-size: 0.8rem; font-weight: 600; color: #c44; } + .step-text { padding-top: 3px; font-size: 0.95rem; line-height: 1.5; color: #bbb; } .step-text strong { color: #e0e0e0; } .homeserver { display: inline-block; - background: rgba(152, 0, 0, 0.1); - border: 1px solid rgba(152, 0, 0, 0.25); + background: rgba(152,0,0,0.1); + border: 1px solid rgba(152,0,0,0.25); color: #e88; font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace; font-size: 0.85rem; padding: 3px 10px; border-radius: 6px; - margin-top: 2px; } - .step-text a { - color: #c44; - text-decoration: none; - border-bottom: 1px solid rgba(204, 68, 68, 0.3); + a { color: #c44; text-decoration: none; } + .step-text a, .option-block a { + border-bottom: 1px solid rgba(204,68,68,0.3); transition: border-color 0.2s; } + .step-text a:hover, .option-block a:hover { border-bottom-color: #c44; } - .step-text a:hover { border-bottom-color: #c44; } - + /* ─── Or divider ─── */ .or-divider { - display: flex; - align-items: center; - gap: 10px; + display: flex; align-items: center; gap: 10px; margin: 4px 0 10px 42px; - color: #444; - font-size: 0.78rem; - letter-spacing: 0.1em; - text-transform: uppercase; + color: #444; font-size: 0.78rem; letter-spacing: 0.1em; text-transform: uppercase; } - .or-divider::before, .or-divider::after { - content: ''; - flex: 1; - height: 1px; - background: rgba(255,255,255,0.06); + content: ''; flex: 1; height: 1px; background: rgba(255,255,255,0.06); } .option-block { @@ -176,374 +151,268 @@ background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.06); border-radius: 8px; - text-align: left; - font-size: 0.88rem; - color: #888; - line-height: 1.5; + text-align: left; font-size: 0.88rem; color: #888; line-height: 1.5; } - .option-block a { - color: #c44; - text-decoration: none; - border-bottom: 1px solid rgba(204, 68, 68, 0.3); - transition: border-color 0.2s; - } + .divider { height: 1px; background: rgba(152,0,0,0.15); margin: 24px 0; } - .option-block a:hover { border-bottom-color: #c44; } - - .divider { - height: 1px; - background: rgba(152, 0, 0, 0.15); - margin: 24px 0; + /* ─── Tags ─── */ + .tag { + font-size: 0.65rem; + background: rgba(255,255,255,0.08); + border: 1px solid rgba(255,255,255,0.1); + padding: 2px 8px; border-radius: 4px; + text-transform: uppercase; letter-spacing: 0.05em; color: #bbb; + white-space: nowrap; } + .tag.voice { background: rgba(0,180,120,0.2); border-color: rgba(0,180,120,0.4); color: #5effc4; } + .tag.beta { background: rgba(255,180,0,0.15); border-color: rgba(255,180,0,0.3); color: #ffcc55; } + .tag.dev { background: rgba(160,80,255,0.15); border-color: rgba(160,80,255,0.3); color: #cc88ff; } + .tag.rust { background: rgba(80,140,255,0.15); border-color: rgba(80,140,255,0.3); color: #88aaff; } + .tag.warn { background: rgba(255,140,0,0.15); border-color: rgba(255,140,0,0.3); color: #ffaa44; } + .tag.dim { background: rgba(255,255,255,0.04); border-color: rgba(255,255,255,0.08); color: #666; } - .clients-section h3 { - font-size: 0.8rem; - font-weight: 500; - color: #666; - text-transform: uppercase; - letter-spacing: 0.12em; - margin-bottom: 14px; - } - - .client-featured { - margin-bottom: 20px; - } + /* ─── Featured client ─── */ + .client-featured { margin-bottom: 16px; } .client-featured a { - display: flex; - flex-direction: column; - align-items: center; - gap: 6px; - background: linear-gradient(135deg, rgba(152, 0, 0, 0.25), rgba(120, 0, 0, 0.15)); - border: 1px solid rgba(152, 0, 0, 0.55); - color: #fff; - text-decoration: none; - padding: 18px 24px; - border-radius: 12px; + display: flex; flex-direction: column; align-items: center; gap: 6px; + background: linear-gradient(135deg, rgba(152,0,0,0.25), rgba(120,0,0,0.15)); + border: 1px solid rgba(152,0,0,0.55); + color: #fff; text-decoration: none; + padding: 18px 24px; border-radius: 12px; transition: all 0.25s ease; - box-shadow: 0 0 20px rgba(152, 0, 0, 0.1); + box-shadow: 0 0 20px rgba(152,0,0,0.1); } - .client-featured a:hover { - background: linear-gradient(135deg, rgba(152, 0, 0, 0.38), rgba(120, 0, 0, 0.25)); - border-color: rgba(152, 0, 0, 0.8); - box-shadow: 0 0 32px rgba(152, 0, 0, 0.25); + background: linear-gradient(135deg, rgba(152,0,0,0.38), rgba(120,0,0,0.25)); + border-color: rgba(152,0,0,0.8); + box-shadow: 0 0 32px rgba(152,0,0,0.25); transform: translateY(-2px); } - .client-featured .client-name { - font-size: 1.15rem; - font-weight: 600; - letter-spacing: 0.05em; + .client-name { font-size: 1.15rem; font-weight: 600; letter-spacing: 0.05em; } + .client-desc { font-size: 0.82rem; color: #ccc; } + + .tag-row { display: flex; gap: 6px; flex-wrap: wrap; justify-content: center; margin-top: 2px; } + + /* Also-available note */ + .also-available { + font-size: 0.78rem; color: #555; margin-top: 8px; line-height: 1.6; + } + .also-available a { color: #666; border-bottom: 1px solid rgba(102,102,102,0.3); transition: color 0.2s; } + .also-available a:hover { color: #999; } + + /* ─── Space join ─── */ + .space-join { + margin-top: 20px; padding: 16px 20px; + background: rgba(152,0,0,0.06); + border: 1px solid rgba(152,0,0,0.2); border-radius: 10px; + } + .space-join p { font-size: 0.82rem; color: #666; margin-bottom: 10px; } + .space-join a { + display: inline-block; + background: rgba(152,0,0,0.15); + border: 1px solid rgba(152,0,0,0.35); + color: #c44; text-decoration: none; + padding: 8px 20px; border-radius: 8px; font-size: 0.88rem; + transition: all 0.25s ease; + } + .space-join a:hover { background: rgba(152,0,0,0.25); color: #fff; } + + /* ─── Secondary client cards ─── */ + .clients-section h3 { + font-size: 0.8rem; font-weight: 500; color: #666; + text-transform: uppercase; letter-spacing: 0.12em; margin-bottom: 14px; } - .client-featured .client-desc { - font-size: 0.82rem; - color: #ccc; + .client-group { margin-bottom: 18px; } + + .client-group-label { + font-size: 0.75rem; color: #555; + text-transform: uppercase; letter-spacing: 0.1em; + margin-bottom: 8px; } - .client-featured .tag-row { - display: flex; - gap: 6px; - flex-wrap: wrap; - justify-content: center; - margin-top: 2px; - } - - .tag { - font-size: 0.65rem; - background: rgba(255,255,255,0.12); - border: 1px solid rgba(255,255,255,0.12); - padding: 2px 8px; - border-radius: 4px; - text-transform: uppercase; - letter-spacing: 0.05em; - color: #ccc; - } - - .tag.voice { - background: rgba(0, 180, 120, 0.2); - border-color: rgba(0, 180, 120, 0.4); - color: #5effc4; - } - - .tag.beta { - background: rgba(255, 180, 0, 0.15); - border: 1px solid rgba(255, 180, 0, 0.3); - color: #ffcc55; - } - - .tag.rust { - background: rgba(80, 140, 255, 0.15); - border: 1px solid rgba(80, 140, 255, 0.3); - color: #88aaff; - } - - .tag.experimental { - background: rgba(255, 140, 0, 0.15); - border: 1px solid rgba(255, 140, 0, 0.3); - color: #ffaa44; - } - - .tag.platform { - background: rgba(255,255,255,0.06); - border: 1px solid rgba(255,255,255,0.1); - color: #888; - } - - /* Secondary client cards */ - .client-cards { - display: flex; - flex-direction: column; - gap: 8px; - margin-bottom: 4px; - } + .client-cards { display: flex; flex-direction: column; gap: 8px; } .client-card { - display: flex; - flex-direction: column; - gap: 6px; + display: flex; flex-direction: column; gap: 6px; background: rgba(255,255,255,0.025); border: 1px solid rgba(255,255,255,0.06); - border-radius: 10px; - padding: 12px 14px; - text-align: left; + border-radius: 10px; padding: 12px 14px; text-align: left; transition: border-color 0.2s; } - .client-card:hover { border-color: rgba(152,0,0,0.3); } .client-card-top { - display: flex; - align-items: center; - justify-content: space-between; - gap: 10px; - flex-wrap: wrap; + display: flex; align-items: center; + justify-content: space-between; gap: 10px; flex-wrap: wrap; } .client-card-name { - font-size: 0.95rem; - font-weight: 600; - color: #e0e0e0; + font-size: 0.95rem; font-weight: 600; color: #e0e0e0; text-decoration: none; - border-bottom: 1px solid rgba(204,68,68,0.25); + border-bottom: 1px solid rgba(204,68,68,0.2); transition: color 0.2s, border-color 0.2s; } + .client-card-name:hover { color: #c44; border-bottom-color: #c44; } - .client-card-name:hover { - color: #c44; - border-bottom-color: #c44; - } + .client-card-tags { display: flex; gap: 5px; flex-wrap: wrap; } + .client-card-desc { font-size: 0.8rem; color: #666; line-height: 1.45; } - .client-card-tags { - display: flex; - gap: 5px; - flex-wrap: wrap; - } - - .client-card-desc { - font-size: 0.8rem; - color: #666; - line-height: 1.45; - } - - .client-group { - margin-bottom: 18px; - } - - .client-group-label { - font-size: 0.75rem; - color: #555; - text-transform: uppercase; - letter-spacing: 0.1em; - margin-bottom: 8px; - line-height: 1.4; - } - - .space-join { - margin-top: 20px; - padding: 16px 20px; - background: rgba(152, 0, 0, 0.06); - border: 1px solid rgba(152, 0, 0, 0.2); - border-radius: 10px; - } - - .space-join p { - font-size: 0.82rem; - color: #666; - margin-bottom: 10px; - } - - .space-join a { - display: inline-block; - background: rgba(152, 0, 0, 0.15); - border: 1px solid rgba(152, 0, 0, 0.35); - color: #c44; - text-decoration: none; - padding: 8px 20px; - border-radius: 8px; - font-size: 0.88rem; - transition: all 0.25s ease; - } - - .space-join a:hover { - background: rgba(152, 0, 0, 0.25); - color: #fff; - } - - .security-note { - margin-top: 14px; - padding: 10px 14px; - background: rgba(80, 140, 255, 0.04); - border: 1px solid rgba(80, 140, 255, 0.12); - border-radius: 8px; - font-size: 0.76rem; - color: #556; - line-height: 1.5; - text-align: left; - } - - .security-note strong { color: #88aaff; } - - .all-clients { - margin-top: 14px; - } - - .all-clients a { - font-size: 0.78rem; - color: #555; - text-decoration: none; - border-bottom: 1px solid rgba(85, 85, 85, 0.3); - transition: color 0.2s, border-color 0.2s; - } - - .all-clients a:hover { - color: #888; - border-bottom-color: #888; - } - - .contact { - margin-top: 24px; - padding: 16px; - background: linear-gradient(145deg, rgba(22, 22, 22, 0.95), rgba(14, 14, 14, 0.98)); - border: 1px solid rgba(152, 0, 0, 0.2); - border-radius: 12px; - text-align: center; - } - - .footer { - margin-top: 20px; - font-size: 0.72rem; - color: #383838; - letter-spacing: 0.04em; - display: flex; - justify-content: center; - gap: 14px; - flex-wrap: wrap; - } - - .footer a { - color: #444; - text-decoration: none; - transition: color 0.2s; - } - - .footer a:hover { color: #777; } - - .server-info { - margin-top: 24px; - background: linear-gradient(145deg, rgba(22, 22, 22, 0.95), rgba(14, 14, 14, 0.98)); - border: 1px solid rgba(152, 0, 0, 0.2); - border-radius: 12px; + /* ─── Comparison table ─── */ + .comparison-section { + margin-top: 32px; + background: linear-gradient(145deg, rgba(22,22,22,0.95), rgba(14,14,14,0.98)); + border: 1px solid rgba(152,0,0,0.2); + border-radius: 16px; overflow: hidden; } + .comparison-title { + font-size: 0.78rem; font-weight: 500; color: #980000; + text-transform: uppercase; letter-spacing: 0.15em; + padding: 16px 20px 12px; + border-bottom: 1px solid rgba(152,0,0,0.1); + } + + .table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; } + + table { + width: 100%; border-collapse: collapse; + font-size: 0.78rem; min-width: 640px; + } + + thead tr { border-bottom: 1px solid rgba(152,0,0,0.15); } + + th { + padding: 10px 8px; text-align: center; + font-size: 0.7rem; font-weight: 600; + color: #888; text-transform: uppercase; letter-spacing: 0.08em; + background: rgba(255,255,255,0.02); + } + th:first-child { text-align: left; padding-left: 16px; min-width: 140px; } + th.ours { color: #c66; } + + th small { display: block; font-size: 0.6rem; font-weight: 400; color: #555; margin-top: 2px; text-transform: none; letter-spacing: 0; } + + tr { border-bottom: 1px solid rgba(255,255,255,0.03); } + tr:last-child { border-bottom: none; } + + tr.section-header td { + background: rgba(152,0,0,0.06); + color: #770000; font-weight: 600; + font-size: 0.65rem; text-transform: uppercase; letter-spacing: 0.12em; + padding: 6px 8px 5px 16px; text-align: left; + } + + td { + padding: 8px 8px; text-align: center; vertical-align: middle; + color: #888; line-height: 1.3; + } + td:first-child { + text-align: left; padding-left: 16px; + color: #aaa; font-size: 0.78rem; + } + td small { display: block; font-size: 0.68rem; color: #555; margin-top: 1px; } + + .yes { color: #5effc4; font-size: 1rem; } + .part { color: #ffcc55; font-size: 0.9rem; } + .no { color: #444; font-size: 1rem; } + + /* highlight our hosted client column */ + th.ours, td.ours { background: rgba(152,0,0,0.04); } + + /* ─── Legend ─── */ + .legend { + display: flex; gap: 18px; justify-content: center; flex-wrap: wrap; + padding: 10px 16px 14px; + border-top: 1px solid rgba(255,255,255,0.04); + font-size: 0.72rem; color: #555; + } + .legend span { display: flex; align-items: center; gap: 5px; } + + /* ─── Security note ─── */ + .security-note { + margin: 0 20px 16px; + padding: 10px 14px; + background: rgba(80,140,255,0.04); + border: 1px solid rgba(80,140,255,0.12); + border-radius: 8px; + font-size: 0.76rem; color: #556; line-height: 1.55; text-align: left; + } + .security-note strong { color: #88aaff; } + + .all-clients { margin-top: 14px; } + .all-clients a { + font-size: 0.78rem; color: #555; + border-bottom: 1px solid rgba(85,85,85,0.3); + transition: color 0.2s, border-color 0.2s; + } + .all-clients a:hover { color: #888; border-bottom-color: #888; } + + /* ─── Server info ─── */ + .server-info { + margin-top: 24px; + background: linear-gradient(145deg, rgba(22,22,22,0.95), rgba(14,14,14,0.98)); + border: 1px solid rgba(152,0,0,0.2); + border-radius: 12px; overflow: hidden; + } .server-info-title { - font-size: 0.78rem; - font-weight: 500; - color: #980000; - text-transform: uppercase; - letter-spacing: 0.15em; + font-size: 0.78rem; font-weight: 500; color: #980000; + text-transform: uppercase; letter-spacing: 0.15em; padding: 14px 20px 10px; - border-bottom: 1px solid rgba(152, 0, 0, 0.1); + border-bottom: 1px solid rgba(152,0,0,0.1); } - - .info-grid { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 0; - } - + .info-grid { display: grid; grid-template-columns: 1fr 1fr; } .info-item { padding: 12px 18px; border-bottom: 1px solid rgba(255,255,255,0.03); border-right: 1px solid rgba(255,255,255,0.03); text-align: left; } - .info-item:nth-child(even) { border-right: none; } .info-item:nth-last-child(-n+2) { border-bottom: none; } - - .info-label { - font-size: 0.7rem; - color: #555; - text-transform: uppercase; - letter-spacing: 0.1em; - margin-bottom: 3px; - } - - .info-value { - font-size: 0.88rem; - color: #ccc; - } - - .info-value.green { color: #5effc4; } + .info-label { font-size: 0.7rem; color: #555; text-transform: uppercase; letter-spacing: 0.1em; margin-bottom: 3px; } + .info-value { font-size: 0.88rem; color: #ccc; } .privacy-strip { - margin-top: 12px; padding: 10px 18px; - border-top: 1px solid rgba(152, 0, 0, 0.1); - display: flex; - gap: 18px; - justify-content: center; - flex-wrap: wrap; - } - - .privacy-badge { - font-size: 0.75rem; - color: #5effc4; - display: flex; - align-items: center; - gap: 5px; - } - - .privacy-badge::before { - content: '✓'; - font-weight: 700; + border-top: 1px solid rgba(152,0,0,0.1); + display: flex; gap: 18px; justify-content: center; flex-wrap: wrap; } + .privacy-badge { font-size: 0.75rem; color: #5effc4; display: flex; align-items: center; gap: 5px; } + .privacy-badge::before { content: '✓'; font-weight: 700; } + /* ─── Legal / contact / footer ─── */ .legal-note { - margin-top: 24px; - padding: 12px 18px; + margin-top: 24px; padding: 12px 18px; background: rgba(255,255,255,0.02); border: 1px solid rgba(255,255,255,0.05); - border-radius: 8px; - font-size: 0.75rem; - color: #444; - line-height: 1.6; - text-align: left; + border-radius: 8px; font-size: 0.75rem; color: #444; + line-height: 1.6; text-align: left; } - - .legal-note a { - color: #555; - text-decoration: none; - border-bottom: 1px solid rgba(85,85,85,0.3); - } - + .legal-note a { color: #555; border-bottom: 1px solid rgba(85,85,85,0.3); } .legal-note a:hover { color: #888; } - @media (max-width: 480px) { + .contact { + margin-top: 24px; padding: 16px; + background: linear-gradient(145deg, rgba(22,22,22,0.95), rgba(14,14,14,0.98)); + border: 1px solid rgba(152,0,0,0.2); + border-radius: 12px; text-align: center; + } + + .footer { + margin-top: 20px; font-size: 0.72rem; color: #383838; + letter-spacing: 0.04em; + display: flex; justify-content: center; gap: 14px; flex-wrap: wrap; + } + .footer a { color: #444; transition: color 0.2s; } + .footer a:hover { color: #777; } + + /* ─── Responsive ─── */ + @media (max-width: 600px) { .logo { width: 110px; height: 110px; } h1 { font-size: 1.5rem; } .card { padding: 24px 18px; } @@ -553,204 +422,468 @@ -
- +
-

Lotus Guild

-

Private Communications

+ -
-

How to Join

-
    -
  1. - 1 - Open chat.lotusguild.org — your homeserver is pre-configured -
  2. -
  3. - 2 - Register with a token from Jared@jared:matrix.lotusguild.org -
  4. -
  5. - 3 - Join the Lotus Guild Space to access all rooms -
  6. -
+

Lotus Guild

+

Private Communications

-
or join from another server
-
- Already have a Matrix account? Sign up free at mozilla.org or matrix.org, then join our space. + +
+

How to Join

+
    +
  1. + 1 + Open chat.lotusguild.org — your homeserver is pre-configured +
  2. +
  3. + 2 + Register with a token from Jared@jared:matrix.lotusguild.org +
  4. +
  5. + 3 + Join the Lotus Guild Space to access all rooms +
  6. +
+ +
or join from another server
+
+ Already have a Matrix account? Sign up free at mozilla.org or matrix.org, then join our space. +
+ +
+ + +
+

Recommended Client

+ + +

+ Runs the Cinny dev branch — latest beta features, updated nightly. + Prefer stable? Use cinny.in and set homeserver to matrix.lotusguild.org. +

+ +
+

Already signed in? Jump straight into the community:

+ Join Lotus Guild Space →
+
-

Recommended Client

+

Other Clients

- - -
-

Already signed in? Jump straight into the community:

- Join Lotus Guild Space → -
- -
- -
-

Other Clients

- -
-

Mobile — iOS & Android

-
-
-
- Element X -
- iOS - Android - Rust SDK - Voice & Video -
+
+

Mobile — iOS & Android

+
+
+
+ Element X +
+ iOS + Android + Rust SDK + Voice, Video & Screenshare
-

Fastest Matrix client. Native MatrixRTC calls and screenshare. Modern Rust encryption (Vodozemac). Spaces and Threads in active development.

-
-
- FluffyChat -
- iOS - Android - Rust SDK - Calls Experimental -
+

Fastest Matrix client — instant load via Sliding Sync. Native MatrixRTC calls and screenshare. Rust encryption (Vodozemac). Spaces viewing works; creating/managing spaces still in progress.

+
+
+
+ FluffyChat +
+ iOS + Android + Desktop + Web + Rust SDK + Calls Experimental
-

Simple, cross-platform, beginner-friendly. Rust encryption (Vodozemac). Voice/video calls are experimental — call support depends on your homeserver.

+

Simple, beginner-friendly, fully cross-platform. Rust encryption (Vodozemac). Unique: supports image captions (text + image as one event). Voice/video calls are experimental — reliability varies by homeserver and platform.

+
-
-

Discord-like — Android, Windows & Linux

-
-
-
- Commet -
- Android - Windows - Linux - Beta - Voice & Video -
+
+

Discord-like — Android, Windows & Linux

+
+
+
+ Commet +
+ Android + Windows + Linux + Beta + Voice & Video
-

Closest Discord replacement. Multi-account, GIF search (privacy-respecting proxy), shared calendars and photo albums. No iOS or macOS yet.

+

Most Discord-like client overall. Multi-account support, built-in GIF search (via privacy-respecting proxy — GIFs upload to your homeserver, not tracked by Tenor). Shared calendars and photo albums. No iOS or macOS yet. Active early-stage development.

+
-
-

Desktop — Windows, macOS & Linux

-
-
-
- Element -
- Windows - macOS - Linux - Web - Voice, Video & Screenshare -
+
+

Desktop — Windows, macOS & Linux

+
+
+
+ Element +
+ Windows + macOS + Linux + Web + Voice, Video & Screenshare
-

Most feature-complete Matrix client. Every spec feature supported. Heavier on resources than alternatives.

-
-
- Nheko -
- Windows - macOS - Linux - Voice & Video -
+

Most feature-complete Matrix client — every spec feature including polls, widgets, threads, screenshare. Heavier on resources. Encrypted message search on desktop only (not web).

+
+
+
+ Nheko +
+ Windows + macOS + Linux + Voice & Video
-

Native C++/Qt client. Lightweight alternative to Electron-based apps. Recommended for Linux/KDE users who want low resource usage.

+

Native C++/Qt client — lightest desktop option, no Electron. Deep KDE/Plasma integration. No threads, no mobile or web. Best for Linux power users who want minimal resource usage.

- -
- Encryption note: Element X, FluffyChat, and Commet use Vodozemac — the Rust implementation of Matrix encryption. Element Web/Desktop and Cinny use matrix-js-sdk, which is undergoing a migration to the Rust SDK. Rust-based clients have a stronger cryptographic track record. -
- -

View all Matrix clients →

+ +

View all Matrix clients →

+
-
-

Server Details

-
-
-
Access
-
Invite-only
-
-
-
Max Upload
-
200 MB / file
-
-
-
Message History
-
Kept indefinitely
-
-
-
Media Retention
-
3 yr local · 1 yr remote
-
-
-
Federation
-
Fully federated
-
-
-
Minimum Age
-
13+ (COPPA)
-
+ +
+

Client Feature Comparison — March 2026

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Cinnychat.lotusguild.org
dev branch
Element XiOS & AndroidFluffyChatAll platformsCommetAndroid / Win / LinuxElementWeb & DesktopNhekoDesktop only
Platform
iOS
Android
Desktop appWin & Linux
Web browser
PerformanceLightVery fastSliding SyncModerateModerateHeavyElectron / JSLightNative C++
Security & Encryption
E2EE
Rust SDK (Vodozemac)stronger crypto track recordjs-sdkjs-sdk, migrating
Device verification~requests may show as
"Unsupported message"
Voice & Video
Voice & video calls~dedicated space rooms only,
not DMs
MatrixRTC~experimental, varies
by homeserver
1:1 + group
Screenshare~partial
Group calls~space rooms onlyMatrixRTC~partial
Core Features
Spacesbest-in-class sub-space nav~viewing works;
management in progress
Discord-like categoriessub-spaces clunky~limited
Threads~basic, no dedicated view~Labs flagshows as regular messages
Polls~recently added
Custom emoji & stickersbest-in-class~bulk upload, Signal packs~sometimes shows mxc:// URLs
GIF search / pickerprivacy proxy,
uploads to homeserver
Message search (encrypted)~partial, some rooms broken~~desktop only, not web~
Widgets
UX & Extras
Multi-account~supported but clunkyCLI profiles only
Image captions(text + image as one event)unique feature~
Discord-like UIbest-in-class for webWhatsApp/Telegram stylemost Discord-like overall
Shared calendars & albumsunique to Commet
Push notifications~web push onlydesktop
+
+ +
+ Encryption architecture: Element X, FluffyChat, and Commet use Vodozemac — the Rust implementation of Matrix encryption — which has a stronger security track record than the older JavaScript SDK. Cinny and Element Web/Desktop currently use matrix-js-sdk; Element is actively migrating to the Rust SDK via WebAssembly. Rust-based clients were not affected by historical js-sdk implementation vulnerabilities. +
+ +
+ Full support + ~ Partial / experimental + Not supported +
+ +
+ + +
+

Server Details

+
+
+
Access
+
Invite-only
-
- No ads or tracking - No data sold - E2EE — server cannot read encrypted rooms +
+
Max Upload
+
200 MB / file
+
+
+
Message History
+
Kept indefinitely
+
+
+
Media Retention
+
3 yr local · 1 yr remote
+
+
+
Federation
+
Fully federated
+
+
+
Minimum Age
+
13+ (COPPA)
- - + + + +
+

Questions or need a registration token?

+

Reach out to @jared:matrix.lotusguild.org

+
+ + + +