Files
quicproquo/crates/quicproquo-gui/README.md
Chris Nennemann 853ca4fec0 chore: rename project quicnprotochat -> quicproquo (binaries: qpq)
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>
2026-03-01 20:11:51 +01:00

1.5 KiB
Raw Blame History

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 LocalSet and a request-response loop.
  • The UI thread sends commands over an mpsc channel: Whoami { state_path, password } or Health { server, ca_cert, server_name }.
  • For each request, the backend runs sync code (whoami) or LocalSet::run_until(async { ... }) (health). It then sends Result<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 whoami and shows JSON (identity_key, fingerprint, etc.).
  • Health server address; calls health and 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.