chore: rename quicproquo → quicprochat in docs, Docker, CI, and packaging

Rename all project references from quicproquo/qpq to quicprochat/qpc
across documentation, Docker configuration, CI workflows, packaging
scripts, operational configs, and build tooling.

- Docker: crate paths, binary names, user/group, data dirs, env vars
- CI: workflow crate references, binary names, artifact names
- Docs: all markdown files under docs/, SDK READMEs, book.toml
- Packaging: OpenWrt Makefile, init script, UCI config (file renames)
- Scripts: justfile, dev-shell, screenshot, cross-compile, ai_team
- Operations: Prometheus config, alert rules, Grafana dashboard
- Config: .env.example (QPQ_* → QPC_*), CODEOWNERS paths
- Top-level: README, CONTRIBUTING, ROADMAP, CLAUDE.md
This commit is contained in:
2026-03-07 18:46:43 +01:00
parent a710037dde
commit 2e081ead8e
179 changed files with 1645 additions and 1645 deletions

View File

@@ -1,6 +1,6 @@
# Crate Responsibilities
The quicproquo workspace contains nine crates. The core four (proto, core,
The quicprochat workspace contains nine crates. The core four (proto, core,
server, client) follow strict layering rules; each owns one concern and depends
only on the crates below it. The workspace also includes dedicated crates for
the RPC framework, client SDK, key transparency, plugin API, and P2P. This
@@ -13,7 +13,7 @@ crates relate to one another.
```text
+-------------------+ +-------------------+
| quicproquo-client | | quicproquo-sdk |
| quicprochat-client | | quicprochat-sdk |
| (CLI/TUI binary) | | (QpqClient, store)|
+--------+----------+ +--------+----------+
| |
@@ -21,7 +21,7 @@ crates relate to one another.
| |
v v
+-----------+----------+
| quicproquo-rpc |
| quicprochat-rpc |
| (framing, server, |
| client, middleware) |
+--------+-------------+
@@ -30,20 +30,20 @@ crates relate to one another.
| |
v v
+------------------------+ +-----------------------------+
| quicproquo-core | | quicproquo-server |
| quicprochat-core | | quicprochat-server |
| (crypto, MLS, | | (RPC server + domain |
| hybrid KEM) | | services) |
+----------+-------------+ +-------------+---------------+
| |
| +-------------------+ |
+------>| quicproquo-proto |<--+
+------>| quicprochat-proto |<--+
| (capnp legacy + |
| prost v2 types) |
+-------------------+
(separate, no shared deps)
+-------------------+ +-------------------+ +-------------------+
| quicproquo-kt | | quicproquo-p2p | | quicproquo- |
| quicprochat-kt | | quicprochat-p2p | | quicprochat- |
| (key transparency)| | (iroh P2P) | | plugin-api |
+-------------------+ +-------------------+ | (#![no_std] C-ABI)|
+-------------------+
@@ -56,7 +56,7 @@ both the sdk and server.
---
## quicproquo-core
## quicprochat-core
**Role:** Pure cryptographic logic. No network I/O. No async runtime
dependency.
@@ -83,11 +83,11 @@ dependency.
`ed25519-dalek`, `openmls`, `openmls_rust_crypto`,
`openmls_traits`, `tls_codec`, `ml-kem`, `x25519-dalek`, `chacha20poly1305`,
`hkdf`, `sha2`, `zeroize`, `quicproquo-proto`, `serde`, `bincode`, `thiserror`.
`hkdf`, `sha2`, `zeroize`, `quicprochat-proto`, `serde`, `bincode`, `thiserror`.
---
## quicproquo-proto
## quicprochat-proto
**Role:** Protocol type definitions for both v1 (legacy Cap'n Proto) and v2
(Protobuf/prost). This crate is the single source of truth for wire types and
@@ -98,9 +98,9 @@ method ID constants.
| Item | Description |
|-------------------------------|-------------|
| `schemas/*.capnp` | Legacy Cap'n Proto schemas (auth, delivery, node, federation). |
| `proto/qpq/v1/*.proto` | 14 Protobuf files defining all v2 message types. |
| `proto/qpc/v1/*.proto` | 14 Protobuf files defining all v2 message types. |
| `build.rs` | Invokes `capnpc` for legacy types and `prost-build` for v2 types. |
| `pub mod qpq::v1` | All Protobuf-generated types, included via `prost` `include!`. |
| `pub mod qpc::v1` | All Protobuf-generated types, included via `prost` `include!`. |
| `pub mod method_ids` | All 44 RPC method ID constants (u16) plus 4 push event type constants. |
| `auth_capnp`, `node_capnp`... | Re-exported legacy Cap'n Proto generated modules. |
@@ -138,7 +138,7 @@ method ID constants.
---
## quicproquo-rpc
## quicprochat-rpc
**Role:** v2 RPC framework. Implements the custom binary framing protocol,
server-side dispatch, client-side request/response handling, and Tower
@@ -169,12 +169,12 @@ Push: [event_type: u16 BE][payload_len: u32 BE][protobuf]
### Key dependencies
`quinn`, `rustls`, `tokio`, `bytes`, `tower`, `prost`, `quicproquo-proto`,
`quinn`, `rustls`, `tokio`, `bytes`, `tower`, `prost`, `quicprochat-proto`,
`tracing`, `thiserror`.
---
## quicproquo-sdk
## quicprochat-sdk
**Role:** High-level client SDK. `QpqClient` wraps the RPC client with
typed methods, an async event broadcast channel, and a `ConversationStore`
@@ -190,17 +190,17 @@ for local conversation state.
### What this crate does NOT do
- No raw frame handling -- delegates to `quicproquo-rpc`.
- No MLS group state management -- delegates to `quicproquo-core`.
- No raw frame handling -- delegates to `quicprochat-rpc`.
- No MLS group state management -- delegates to `quicprochat-core`.
### Key dependencies
`quicproquo-rpc`, `quicproquo-core`, `quicproquo-proto`, `tokio`, `rusqlite`,
`quicprochat-rpc`, `quicprochat-core`, `quicprochat-proto`, `tokio`, `rusqlite`,
`prost`, `tracing`, `thiserror`, `anyhow`.
---
## quicproquo-server
## quicprochat-server
**Role:** Network-facing server binary. Accepts QUIC + TLS 1.3 connections,
dispatches 44 Protobuf RPC methods through registered handlers in `domain/`,
@@ -213,13 +213,13 @@ and persists state to SQLCipher.
| `v2_handlers/` | One handler module per method category (auth, delivery, keys, channel, group, user, kt, blob, device, p2p, federation, moderation, recovery, account). |
| `domain/` | Protocol-agnostic domain types and service logic (e.g., `AuthService`, `DeliveryService`, `KeyService`). |
| `ServerState` | Shared state: SQLCipher connection pool, DashMap waiters, OPAQUE server state. |
| TLS config | Self-signed certificate auto-generated on first run (`rcgen`). TLS 1.3 only, ALPN `qpq`. |
| TLS config | Self-signed certificate auto-generated on first run (`rcgen`). TLS 1.3 only, ALPN `qpc`. |
| CLI (`clap`) | `--listen` (default `0.0.0.0:5001`), `--data-dir`, `--tls-cert`, `--tls-key`. |
### Connection lifecycle
```
QUIC accept (ALPN: "qpq")
QUIC accept (ALPN: "qpc")
+- TLS 1.3 handshake (self-signed cert)
+- Per-stream: read RequestFrame -> dispatch to handler -> write ResponseFrame
+- Uni-stream (server -> client): write PushFrame for events
@@ -235,13 +235,13 @@ via `tokio::spawn`.
### Key dependencies
`quicproquo-core`, `quicproquo-proto`, `quicproquo-rpc`, `quinn`, `rustls`,
`quicprochat-core`, `quicprochat-proto`, `quicprochat-rpc`, `quinn`, `rustls`,
`rcgen`, `tokio`, `dashmap`, `rusqlite`, `prost`, `clap`, `tracing`, `anyhow`,
`thiserror`.
---
## quicproquo-client
## quicprochat-client
**Role:** CLI/TUI client binary. Connects to the server, orchestrates MLS
group operations via `GroupMember`, and persists identity and group state.
@@ -249,16 +249,16 @@ group operations via `GroupMember`, and persists identity and group state.
### What this crate does NOT do
- No server-side logic.
- No raw frame parsing -- delegates to `quicproquo-sdk` / `quicproquo-rpc`.
- No raw frame parsing -- delegates to `quicprochat-sdk` / `quicprochat-rpc`.
### Key dependencies
`quicproquo-sdk`, `quicproquo-core`, `quicproquo-proto`, `tokio`, `clap`,
`quicprochat-sdk`, `quicprochat-core`, `quicprochat-proto`, `tokio`, `clap`,
`rustyline`, `tracing`, `anyhow`.
---
## quicproquo-kt
## quicprochat-kt
**Role:** Key transparency. Implements an append-only transparency log for
Ed25519 public keys with revocation checking and audit support.
@@ -268,7 +268,7 @@ Methods exposed: `RevokeKey` (510), `CheckRevocation` (511),
---
## quicproquo-plugin-api
## quicprochat-plugin-api
**Role:** `#![no_std]` C-ABI plugin interface. Defines a stable ABI for
dynamically loaded plugins with 6 hook points (on_message_send,
@@ -279,11 +279,11 @@ allow plugins compiled for embedded or WASM targets.
---
## quicproquo-p2p
## quicprochat-p2p
**Role:** P2P endpoint publish and resolve via iroh. Used by the server and
clients for direct peer discovery when the `mesh` feature is enabled on
`quicproquo-client`.
`quicprochat-client`.
Methods exposed: `PublishEndpoint` (800), `ResolveEndpoint` (801).
@@ -308,7 +308,7 @@ build targets due to iroh's large dependency footprint (~90 extra deps).
This layering ensures that:
- Crypto code can be tested in isolation (`cargo test -p quicproquo-core`).
- Crypto code can be tested in isolation (`cargo test -p quicprochat-core`).
- Schema changes propagate automatically through codegen.
- The server binary contains no client-side MLS orchestration logic.
- The client binary contains no server-side storage or listener logic.