From de06612a17ab61e7aaee4437f369c9ab51407f8e Mon Sep 17 00:00:00 2001 From: root Date: Thu, 14 May 2026 11:27:05 -0400 Subject: [PATCH] docs: replace upstream README with Lotus Chat changes diff Lists all differences from upstream Cinny: branding, TDS dark/light themes, chat backgrounds, call improvements (PTT/deafen/screenshare confirm/noise suppression/camera default), new settings section, and technical changes. Co-Authored-By: Claude Sonnet 4.6 --- README.md | 159 ++++++++++++++++++++++-------------------------------- 1 file changed, 65 insertions(+), 94 deletions(-) diff --git a/README.md b/README.md index f1c360822..3d51976ba 100644 --- a/README.md +++ b/README.md @@ -1,111 +1,82 @@ -# Cinny -

- - GitHub release downloads - - DockerHub downloads - - Follow on Mastodon - - Follow on Twitter - - Sponsor Cinny -

+# Lotus Chat -A Matrix client focusing primarily on simple, elegant and secure interface. The main goal is to have an instant messaging application that is easy on people and has a modern touch. -- [Roadmap](https://github.com/orgs/cinnyapp/projects/1) -- [Contributing](./CONTRIBUTING.md) +A Matrix client for [Lotus Guild](https://lotusguild.org) — forked from [Cinny](https://github.com/cinnyapp/cinny) v4.11.1. - +Deployed at [chat.lotusguild.org](https://chat.lotusguild.org). -## Getting started -The web app is available at [app.cinny.in](https://app.cinny.in/) and gets updated on each new release. The `dev` branch is continuously deployed at [dev.cinny.in](https://dev.cinny.in) but keep in mind that it could have things broken. +--- -You can also download our desktop app from the [cinny-desktop repository](https://github.com/cinnyapp/cinny-desktop). +## Changes from upstream Cinny -## Self-hosting -To host Cinny on your own, simply download the tarball from [GitHub releases](https://github.com/cinnyapp/cinny/releases/latest), and serve the files from `dist/` using your preferred webserver. Alternatively, you can just pull the docker image from [DockerHub](https://hub.docker.com/r/ajbura/cinny) or [GitHub Container Registry](https://github.com/cinnyapp/cinny/pkgs/container/cinny). +### Branding & Identity -* The default homeservers and explore pages are defined in [`config.json`](config.json). +- 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.txt` to `lotus-keys.txt` +- `manifest.json` updated with Lotus name, description, and branding colors -* You need to set up redirects to serve the assests. Example configurations; [netlify](netlify.toml), [nginx](contrib/nginx/cinny.domain.tld.conf), [caddy](contrib/caddy/caddyfile). - * If you have trouble configuring redirects you can [enable hash routing](config.json#L35) — the url in the browser will have a `/#/` between the domain and open channel (ie. `app.cinny.in/#/home/` instead of `app.cinny.in/home/`) but you won't have to configure your webserver. +### LotusGuild Terminal Design System (TDS) v1.2 -* To deploy on subdirectory, you need to rebuild the app youself after updating the `base` path in [`build.config.ts`](build.config.ts). - * For example, if you want to deploy on `https://cinny.in/app`, then set `base: '/app'`. +A full custom theme engine layered on top of Cinny's vanilla-extract theming: -
PGP Public Key to verify tarball +**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 -``` ------BEGIN PGP PUBLIC KEY BLOCK----- +**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.tsx` sets `data-theme` attribute based on active theme kind -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 -mxFo+ioe/ABCufSmyqFye0psX3Sp -=WtqZ ------END PGP PUBLIC KEY BLOCK----- -``` -
+**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 -## Local development -> [!TIP] -> We recommend using a version manager as versions change very quickly. You will likely need to switch between multiple Node.js versions based on the needs of different projects you're working on. [NVM on windows](https://github.com/coreybutler/nvm-windows#installation--upgrades) on Windows and [nvm](https://github.com/nvm-sh/nvm) on Linux/macOS are pretty good choices. Recommended nodejs version is Krypton LTS (v24.13.1). +### Voice / Video Call Improvements -Execute the following commands to start a development server: -```sh -npm ci # Installs all dependencies -npm start # Serve a development version -``` +- **Camera default OFF**: Camera no longer persists across sessions via localStorage. Always starts disabled. Optional `cameraOnJoin` setting 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 `noiseSuppression` URL parameter to the embedded Element Call widget -To build the app: -```sh -npm run build # Compiles the app into the dist/ directory -``` +### Settings Additions -### Running with Docker -This repository includes a Dockerfile, which builds the application from source and serves it with Nginx on port 80. To -use this locally, you can build the container like so: -``` -docker build -t cinny:latest . -``` +**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 -You can then run the container you've built with a command similar to this: -``` -docker run -p 8080:80 cinny:latest -``` +### Editor -This will forward your `localhost` port 8080 to the container's port 80. You can visit the app in your browser by navigating to `http://localhost:8080`. +- 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.json` at build time — no hardcoded version strings +- `useCallEmbed.ts`: noise suppression setting wired through `createCallEmbed` → `CallEmbed.getWidget()` → Element Call URL params +- `CallControl.ts`: added `setMicrophone(enabled: boolean)` public method for programmatic mic control (used by PTT) +- `callPreferences` atom: never persists `video: true` to localStorage; camera state always resets to OFF on page load + +--- + +## Upstream + +Based on [Cinny](https://github.com/cinnyapp/cinny) — a Matrix client focusing on simple, elegant and secure interface.