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,8 +1,8 @@
"""quicproquo -- Python SDK for the quicproquo E2E encrypted messenger.
"""quicprochat -- Python SDK for the quicprochat E2E encrypted messenger.
Two transport backends are available:
1. **FFI** (``QpqClient.connect_ffi``): wraps the Rust ``libquicproquo_ffi``
1. **FFI** (``QpqClient.connect_ffi``): wraps the Rust ``libquicprochat_ffi``
shared library via CFFI. This gives you the full Rust crypto stack
(MLS, hybrid KEM, OPAQUE) at native speed.
@@ -11,8 +11,8 @@ Two transport backends are available:
operations must be supplied externally.
"""
from quicproquo.client import QpqClient
from quicproquo.types import (
from quicprochat.client import QpqClient
from quicprochat.types import (
ConnectOptions,
Envelope,
ChannelResult,

View File

@@ -1,27 +1,27 @@
"""High-level quicproquo client.
"""High-level quicprochat client.
Provides both async (QUIC transport) and sync (FFI transport) APIs for
interacting with a quicproquo server.
interacting with a quicprochat server.
"""
from __future__ import annotations
from typing import Optional
from quicproquo.types import (
from quicprochat.types import (
ConnectOptions,
Envelope,
ChannelResult,
HealthInfo,
ConnectionError,
)
from quicproquo.transport import QuicTransport
from quicproquo.ffi import FfiTransport
from quicproquo import proto, wire
from quicprochat.transport import QuicTransport
from quicprochat.ffi import FfiTransport
from quicprochat import proto, wire
class QpqClient:
"""High-level quicproquo client.
"""High-level quicprochat client.
Use ``QpqClient.connect()`` for the async QUIC transport, or
``QpqClient.connect_ffi()`` for the synchronous Rust FFI backend.

View File

@@ -1,7 +1,7 @@
"""CFFI bindings to ``libquicproquo_ffi`` (the Rust C FFI layer).
"""CFFI bindings to ``libquicprochat_ffi`` (the Rust C FFI layer).
This module loads the shared library and exposes a synchronous Python API
that mirrors the C functions in ``crates/quicproquo-ffi/src/lib.rs``.
that mirrors the C functions in ``crates/quicprochat-ffi/src/lib.rs``.
"""
from __future__ import annotations
@@ -13,14 +13,14 @@ from typing import Optional
import cffi
from quicproquo.types import (
from quicprochat.types import (
QpqError,
AuthError,
TimeoutError,
ConnectionError,
)
# Status codes (must match crates/quicproquo-ffi/src/lib.rs).
# Status codes (must match crates/quicprochat-ffi/src/lib.rs).
QPQ_OK = 0
QPQ_ERROR = 1
QPQ_AUTH_FAILED = 2
@@ -54,23 +54,23 @@ def _load_lib() -> object:
# Explicit environment variable.
os.environ.get("QPQ_LIB_PATH", ""),
# Common cargo build output locations.
str(Path(__file__).resolve().parents[3] / "target" / "release" / "libquicproquo_ffi.so"),
str(Path(__file__).resolve().parents[3] / "target" / "debug" / "libquicproquo_ffi.so"),
str(Path(__file__).resolve().parents[3] / "target" / "release" / "libquicprochat_ffi.so"),
str(Path(__file__).resolve().parents[3] / "target" / "debug" / "libquicprochat_ffi.so"),
# macOS dylib.
str(
Path(__file__).resolve().parents[3]
/ "target"
/ "release"
/ "libquicproquo_ffi.dylib"
/ "libquicprochat_ffi.dylib"
),
str(
Path(__file__).resolve().parents[3]
/ "target"
/ "debug"
/ "libquicproquo_ffi.dylib"
/ "libquicprochat_ffi.dylib"
),
# System library path.
"libquicproquo_ffi.so",
"libquicprochat_ffi.so",
]
for path in search_paths:
@@ -83,8 +83,8 @@ def _load_lib() -> object:
continue
raise OSError(
"Could not find libquicproquo_ffi. Set QPQ_LIB_PATH or build with "
"`cargo build --release -p quicproquo-ffi`."
"Could not find libquicprochat_ffi. Set QPQ_LIB_PATH or build with "
"`cargo build --release -p quicprochat-ffi`."
)
@@ -107,7 +107,7 @@ def _check_error(handle: object, code: int) -> None:
class FfiTransport:
"""Synchronous transport wrapping ``libquicproquo_ffi``.
"""Synchronous transport wrapping ``libquicprochat_ffi``.
Provides the same logical operations as ``QuicTransport`` but backed
by the Rust client library through C FFI.

View File

@@ -14,8 +14,8 @@ import asyncio
import ssl
from typing import Any
from quicproquo.types import ConnectionError, TimeoutError
from quicproquo.wire import HEADER_SIZE, encode_frame, decode_header
from quicprochat.types import ConnectionError, TimeoutError
from quicprochat.wire import HEADER_SIZE, encode_frame, decode_header
def _make_protocol_class() -> type:

View File

@@ -1,4 +1,4 @@
"""Data types and exceptions for the quicproquo Python SDK."""
"""Data types and exceptions for the quicprochat Python SDK."""
from __future__ import annotations
@@ -12,7 +12,7 @@ from typing import Optional
class QpqError(Exception):
"""Base exception for quicproquo SDK errors."""
"""Base exception for quicprochat SDK errors."""
class AuthError(QpqError):
@@ -34,7 +34,7 @@ class ConnectionError(QpqError):
@dataclass(frozen=True)
class ConnectOptions:
"""Options for connecting to a quicproquo server.
"""Options for connecting to a quicprochat server.
Parameters
----------

View File

@@ -12,7 +12,7 @@ import struct
HEADER_FMT = "!HII" # network byte-order: u16 + u32 + u32
HEADER_SIZE = struct.calcsize(HEADER_FMT)
# Method IDs (mirrors quicproquo-proto/src/lib.rs::method_ids).
# Method IDs (mirrors quicprochat-proto/src/lib.rs::method_ids).
# Auth (100-103)
OPAQUE_REGISTER_START = 100
OPAQUE_REGISTER_FINISH = 101