diff --git a/README.md b/README.md index 9b6d69b..a91da1a 100644 --- a/README.md +++ b/README.md @@ -1,39 +1,69 @@ -# Cinny desktop +# Lotus Chat desktop - - GitHub release downloads - -Cinny is a matrix client focusing primarily on simple, elegant and secure interface. The desktop app is made with Tauri. +The desktop app for [Lotus Chat](https://chat.lotusguild.org), Lotus Guild's +Matrix client (a fork of [Cinny](https://github.com/cinnyapp/cinny)), built +with [Tauri](https://v2.tauri.app/). The web client lives in the `cinny/` +submodule ([LotusGuild/cinny](https://code.lotusguild.org/LotusGuild/cinny)). ## Download -Installers for macOS, Windows and Linux can be downloaded from [Github releases](https://github.com/cinnyapp/cinny-desktop/releases). Releases are signed with a [Ed25519](https://ed25519.cr.yp.to/) public-key. +Builds are published on this repo's releases page: +**https://code.lotusguild.org/LotusGuild/cinny-desktop/releases/latest** -Operating System | Download ----|--- -Windows | Get it on Windows -macOS | Get it on macOS -Linux | Get it on Linux ยท Flatpak +| Platform | File | +|---|---| +| Windows | `LotusChat-x86_64-setup.exe` (NSIS installer) | +| Debian / Ubuntu | `LotusChat-x86_64.deb`, install with `sudo apt install ./LotusChat-x86_64.deb` | +| Arch | `LotusChat-x86_64.pkg.tar.zst`: download it, then `sudo pacman -U LotusChat-x86_64.pkg.tar.zst` | +| Other Linux | `LotusChat-x86_64.AppImage` | -Decoded public key: -> RWRflTUQD3RHFtn25QNANCmePR9+4LSK89kAKTMEEB4OKpOFpLMgc64z +There is no macOS build at the moment. -To verify release files, you need to download [minisign](https://jedisct1.github.io/minisign/) tool and [decode](https://www.base64decode.org/) the *.sig* file before running: -> minisign -Vm ***RELEASE_FILE.msi.zip*** -P RWRflTUQD3RHFtn25QNANCmePR9+4LSK89kAKTMEEB4OKpOFpLMgc64z -x ***SINGATURE.msi.zip.sig*** +### Updates and signatures + +The app updates itself from +`https://code.lotusguild.org/LotusGuild/cinny-desktop/releases/download/latest/release.json`. +Updater bundles (`.nsis.zip`, `.AppImage.tar.gz`) are signed with minisign; the +`.sig` files sit next to them. Lotus Chat's public key (the base64-decoded +`plugins.updater.pubkey` in `src-tauri/tauri.conf.json`): + +> RWRZZdyii05/NUcz337A5SAbiZK+NPVDWuiL2mM5Jk1p/LfRmNfiZ/6l + +To check a bundle by hand, base64-decode its `.sig` file and run +`minisign -Vm LotusChat-x86_64-setup.nsis.zip -P RWRZZdyii05/NUcz337A5SAbiZK+NPVDWuiL2mM5Jk1p/LfRmNfiZ/6l -x `. + +Packages installed through apt or pacman are updated by downloading the new +package from the releases page; the in-app updater says so instead of +replacing files it doesn't own. + +## Desktop features + +Beyond the web client: + +- **Tray:** unread, call and update state; Do Not Disturb. +- **Launch on login**, with an optional **start minimized**. +- **Closing the window:** asks once whether to keep running in the tray or + quit. A call in progress always goes to the tray. +- **Taskbar / launcher:** unread badge, attention flash, upload progress. +- **Windows:** rich notifications with Reply and Mark as read, Focus Assist + sync, thumbnail toolbar (mute / deafen / end call), jump list, media keys (SMTC). +- **System-wide push-to-talk and deafen** keys that work while another app + (a game) has focus. +- **Keychain:** a copy of your login is kept in the OS keychain. +- **Calls:** the call page runs on its own loopback origin, with WebView + permissions scoped to it; where the WebView has no WebRTC (Linux + WebKitGTK), "Open in browser" instead of a dead end. +- **Linux:** NVIDIA / Wayland rendering workarounds. ## Local development -Firstly, to setup Rust, NodeJS and build tools follow [Tauri documentation](https://v2.tauri.app/start/prerequisites/). +Set up Rust, Node.js and the build tools per the +[Tauri prerequisites](https://v2.tauri.app/start/prerequisites/), then: -Now, to setup development locally run the following commands: -* `git clone --recursive https://github.com/cinnyapp/cinny-desktop.git` -* `cd cinny-desktop/cinny` -* `npm ci` -* `cd ..` -* `npm ci` - -To build the app locally, run: -* `npm run tauri build` - -To start local dev server, run: -* `npm run tauri dev` +```sh +git clone --recursive https://code.lotusguild.org/LotusGuild/cinny-desktop.git +cd cinny-desktop/cinny && npm ci && cd .. +npm ci +npm run tauri dev # development +npm run tauri build # release build +```