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:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user