The .deb and .pkg.tar.zst are not signed packages, and the in-app update prompt has users install them by hand, so nothing checked them. A new checksums job hashes the Linux downloads into SHA256SUMS.txt, signs it with the updater's minisign key (tauri signer) and uploads SHA256SUMS.txt + SHA256SUMS.txt.minisig. The README shows the verify-then-install command. Refs #36 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
86 lines
3.6 KiB
Markdown
86 lines
3.6 KiB
Markdown
# Lotus Chat desktop
|
|
|
|
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
|
|
|
|
Builds are published on this repo's releases page:
|
|
**https://code.lotusguild.org/LotusGuild/cinny-desktop/releases/latest**
|
|
|
|
| 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` |
|
|
|
|
There is no macOS build at the moment.
|
|
|
|
### Verify a Linux download
|
|
|
|
Each release has a `SHA256SUMS.txt`, signed with the same key as the updater
|
|
(below). Check the signature, then the file, then install, e.g. for Arch:
|
|
|
|
```sh
|
|
B=https://code.lotusguild.org/LotusGuild/cinny-desktop/releases/download/latest
|
|
curl -LO $B/LotusChat-x86_64.pkg.tar.zst -LO $B/SHA256SUMS.txt -LO $B/SHA256SUMS.txt.minisig
|
|
minisign -Vm SHA256SUMS.txt -P RWRZZdyii05/NUcz337A5SAbiZK+NPVDWuiL2mM5Jk1p/LfRmNfiZ/6l \
|
|
&& sha256sum -c --ignore-missing SHA256SUMS.txt \
|
|
&& sudo pacman -U ./LotusChat-x86_64.pkg.tar.zst
|
|
```
|
|
|
|
For Debian / Ubuntu use `LotusChat-x86_64.deb` and `sudo apt install ./LotusChat-x86_64.deb`.
|
|
`minisign` is in both distributions' repositories.
|
|
|
|
### 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 <decoded.sig>`.
|
|
|
|
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
|
|
|
|
Set up Rust, Node.js and the build tools per the
|
|
[Tauri prerequisites](https://v2.tauri.app/start/prerequisites/), then:
|
|
|
|
```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
|
|
```
|