Rename the entire workspace:
- Crate packages: quicnprotochat-{core,proto,server,client,gui,p2p,mobile} -> quicproquo-*
- Binary names: quicnprotochat -> qpq, quicnprotochat-server -> qpq-server,
quicnprotochat-gui -> qpq-gui
- Default files: *-state.bin -> qpq-state.bin, *-server.toml -> qpq-server.toml,
*.db -> qpq.db
- Environment variable prefix: QUICNPROTOCHAT_* -> QPQ_*
- App identifier: chat.quicnproto.gui -> chat.quicproquo.gui
- Proto package: quicnprotochat.bench -> quicproquo.bench
- All documentation, Docker, CI, and script references updated
HKDF domain-separation strings and P2P ALPN remain unchanged for
backward compatibility with existing encrypted state and wire protocol.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1.5 KiB
1.5 KiB
quicproquo-gui
Native GUI for quicproquo using Tauri 2. The UI runs in a webview; all server-facing work (capnp-rpc, node_service::Client) runs on a dedicated backend thread with a tokio LocalSet, since that code is !Send.
Backend threading model
- A single backend thread runs a tokio
LocalSetand a request-response loop. - The UI thread sends commands over an
mpscchannel:Whoami { state_path, password }orHealth { server, ca_cert, server_name }. - For each request, the backend runs sync code (whoami) or
LocalSet::run_until(async { ... })(health). It then sendsResult<String, String>back on the provided reply channel. - Tauri commands (
whoami,health) block on that reply so the frontend gets a simple async-style result.
How to run
From the workspace root:
cargo run -p quicproquo-gui
Linux: Tauri uses GTK. Install development packages if the build fails, e.g.:
- Debian/Ubuntu:
sudo apt install libgtk-3-dev libwebkit2gtk-4.1-dev - Fedora:
sudo dnf install gtk3-devel webkit2gtk4.1-devel
Frontend
The frontend is static HTML in ui/index.html (no npm or build step). It provides:
- Whoami – state path (and optional password); calls
whoamiand shows JSON (identity_key, fingerprint, etc.). - Health – server address; calls
healthand shows server status and RTT JSON.
Default CA cert and server name for health are the same as the CLI (data/server-cert.der, localhost) unless overridden via optional params.