d76cd0f7ee319d69036709c0442dc005f0e753ad
Lotus Chat
A Matrix client for Lotus Guild — forked from Cinny v4.11.1.
Deployed at chat.lotusguild.org.
Changes from upstream Cinny
Branding & Identity
- Package renamed to
lotus-chat, description updated to "Lotus Chat — Matrix client for Lotus Guild" - App title changed from "Cinny" to "Lotus Chat" throughout
- Favicon, PWA icons, and all icon sizes (57×57 → 180×180 Apple touch icons) replaced with Lotus.png variants
- Logo in About dialog and Auth page replaced with official Lotus.png
- Auth footer rewritten: shows dynamic version from
package.json, links to lotusguild.org, chat.lotusguild.org, and matrix.lotusguild.org - Welcome page tagline changed from "Yet another matrix client" to "A Matrix client for Lotus Guild"
- Encryption key export filename changed from
cinny-keys.txttolotus-keys.txt manifest.jsonupdated with Lotus name, description, and branding colors
LotusGuild Terminal Design System (TDS) v1.2
A full custom theme engine layered on top of Cinny's vanilla-extract theming:
Dark mode (LotusTerminalTheme):
- CRT terminal aesthetic: scanline overlay, vignette, phosphor glow
- Palette: bg
#030508, orange#FF6B00, cyan#00D4FF, green#00FF88, text#c4d9ee - Monospace font stack, terminal-style scrollbars
- Custom hex-grid and circuit-board CSS background patterns
- Matrix-style boot messages on the welcome page
- CSS variables:
--lt-*family covering colors, glow effects, borders, animations
Light mode (LotusTerminalLightTheme):
- Full light palette: bg
#edf0f5, orange#c44e00, cyan#0062b8, green#006d35, text#111827 - No CRT effects (scanlines, vignette disabled)
- Light-mode scrollbars, adjusted code block colors, semantic color overrides
- Scoped to
html[data-theme="light"] body.lotusTerminalBodyClass ThemeManager.tsxsetsdata-themeattribute based on active theme kind
Chat Backgrounds (18+ custom patterns, all TDS-aware):
- Blueprint grid, carbon fiber, starfield, topographic contours, herringbone, crosshatch
- Chevron, polka dots, triangles, plaid
- All patterns use CSS custom properties — adapt to both TDS dark and light themes
- Settings toggle for showing per-message sender profiles
Voice / Video Call Improvements
- Camera default OFF: Camera no longer persists across sessions via localStorage. Always starts disabled. Optional
cameraOnJoinsetting for explicit opt-in. - Deafen button: Tooltip corrected to "Deafen" / "Undeafen" (was "Turn Off Sound" / "Turn On Sound")
- Screenshare confirmation: A confirm dialog appears before screenshare is broadcast to call participants
- Push to Talk (PTT):
- Configurable keybind (default: Space) via Settings > General > Calls
- Mic activates on keydown, deactivates on keyup
- Visual indicator: orange "PTT — Hold SPACE" when PTT mode is on, green "● LIVE" while transmitting
- Implemented via
CallControl.setMicrophone()public method on the widget bridge
- Noise suppression toggle: Settings > General > Calls — passes
noiseSuppressionURL parameter to the embedded Element Call widget
Settings Additions
Settings > General > Calls (new section):
- Camera on join: toggle whether camera starts enabled
- Noise suppression: toggle noise suppression in calls (default: on)
- Push to Talk: enable PTT mode and configure the keybind
Editor
- Editor toolbar visibility is user-configurable (toggle added to message composer settings)
Technical
- All upstream Cinny URLs replaced (cinny.in → lotusguild.org, Cinny Matrix room → Lotus Guild room)
- Version string is dynamically read from
package.jsonat build time — no hardcoded version strings useCallEmbed.ts: noise suppression setting wired throughcreateCallEmbed→CallEmbed.getWidget()→ Element Call URL paramsCallControl.ts: addedsetMicrophone(enabled: boolean)public method for programmatic mic control (used by PTT)callPreferencesatom: never persistsvideo: trueto localStorage; camera state always resets to OFF on page load
Upstream
Based on Cinny — a Matrix client focusing on simple, elegant and secure interface.
Languages
TypeScript
98.2%
JavaScript
1.4%
CSS
0.3%
HTML
0.1%