v0.0.21: TUI overhaul, WZP call infrastructure, security hardening, federation
TUI:
- Split 1,756-line app.rs monolith into 7 modules (types, draw, commands, input, file_transfer, network, mod)
- Message timestamps [HH:MM], scrolling (PageUp/Down/arrows), connection status dot, unread badge
- /help command, terminal bell on incoming DM, /devices + /kick commands
- 44 unit tests (types, input, draw with TestBackend)
Server — WZP Call Infrastructure (FC-2/3/5/6/7/10):
- Call state management (CallState, CallStatus, active_calls, calls + missed_calls sled trees)
- WS call signal awareness (Offer/Answer/Hangup update state, missed call on offline)
- Group call endpoint (POST /groups/:name/call with SHA-256 room ID, fan-out)
- Presence API (GET /presence/:fp, POST /presence/batch)
- Missed call flush on WS reconnect
- WZP relay config + CORS
Server — Security (FC-P1):
- Auth enforcement middleware (AuthFingerprint extractor on 13 write handlers)
- Session auto-recovery (delete corrupted ratchet, show [session reset])
- WS connection cap (5/fingerprint) + global concurrency limit (200)
- Device management (GET /devices, POST /devices/:id/kick, POST /devices/revoke-all)
Server — Federation:
- Two-server federation via JSON config (--federation flag)
- Periodic presence sync (every 5s, full-state, self-healing)
- Message forwarding via HTTP POST with SHA-256(secret||body) auth
- Graceful degradation (peer down = queue locally)
- deliver_or_queue() replaces push-or-queue in ws.rs + messages.rs
Client — Group Messaging:
- SenderKeyDistribution storage + GroupSenderKey decryption in TUI
- sender_keys sled tree in LocalDb
WASM:
- All 8 WireMessage variants handled (no more "unsupported")
- decrypt_group_message() + create_sender_key_from_distribution() exports
- CallSignal parsing with signal_type mapping
Docs:
- ARCHITECTURE.md rewritten with Mermaid diagrams
- README.md created
- TASK_PLAN.md with FC-P{phase}-T{task} naming
- PROGRESS.md updated to v0.0.21
WZP submodule updated to 6f4e8eb (IAX2 trunking, adaptive quality, metrics, all S-tasks done)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Warzone Messenger (featherChat) — Progress Report
|
||||
|
||||
**Current Version:** 0.0.20
|
||||
**Current Version:** 0.0.21
|
||||
**Last Updated:** 2026-03-28
|
||||
|
||||
---
|
||||
@@ -68,16 +68,42 @@ Built on the Phase 1 foundation to deliver a complete messaging experience:
|
||||
| Reply shortcut (/r, /reply) | 0.0.19 | Done |
|
||||
| 28 protocol tests | 0.0.20 | Done |
|
||||
|
||||
### Phase 2.5 — WZP Integration & TUI Overhaul (v0.0.21)
|
||||
|
||||
| Feature | Version | Status |
|
||||
|------------------------------------------|---------|--------|
|
||||
| warzone-protocol standalone-importable | 0.0.21 | Done |
|
||||
| CallSignal WireMessage variant | 0.0.21 | Done |
|
||||
| Auth token validation endpoint | 0.0.21 | Done |
|
||||
| TUI modular split (7 modules from 1) | 0.0.21 | Done |
|
||||
| TUI message timestamps [HH:MM] | 0.0.21 | Done |
|
||||
| TUI message scrolling (PageUp/Down/arrows) | 0.0.21 | Done |
|
||||
| TUI connection status indicator | 0.0.21 | Done |
|
||||
| TUI unread message badge | 0.0.21 | Done |
|
||||
| TUI /help command | 0.0.21 | Done |
|
||||
| TUI terminal bell on incoming DM | 0.0.21 | Done |
|
||||
| 44 TUI unit tests (types, input, draw) | 0.0.21 | Done |
|
||||
| Call state management (server) | 0.0.21 | Done |
|
||||
| WS call signaling awareness | 0.0.21 | Done |
|
||||
| Group-to-room mapping + group call API | 0.0.21 | Done |
|
||||
| Presence/online status API | 0.0.21 | Done |
|
||||
| Missed call notifications | 0.0.21 | Done |
|
||||
| WZP relay config + CORS | 0.0.21 | Done |
|
||||
| WZP submodule: all 9 S-tasks done | 0.0.21 | Done |
|
||||
| 72 total tests (28 protocol + 44 client) | 0.0.21 | Done |
|
||||
|
||||
---
|
||||
|
||||
## Current Version: v0.0.20
|
||||
## Current Version: v0.0.21
|
||||
|
||||
### Codebase Statistics
|
||||
|
||||
| Metric | Value |
|
||||
|-------------------|--------------------------------|
|
||||
| Crates | 5 (protocol, server, client, wasm, mule) |
|
||||
| Protocol tests | 28 |
|
||||
| Total tests | 72 (28 protocol + 44 client) |
|
||||
| Server routes | 12 files, 9 new endpoints |
|
||||
| TUI modules | 7 (split from 1 monolith) |
|
||||
| Rust edition | 2021 |
|
||||
| Min Rust version | 1.75 |
|
||||
| License | MIT |
|
||||
@@ -91,7 +117,7 @@ Built on the Phase 1 foundation to deliver a complete messaging experience:
|
||||
| prekey | Signed + one-time pre-keys |
|
||||
| x3dh | Extended Triple Diffie-Hellman |
|
||||
| ratchet | Double Ratchet state machine |
|
||||
| message | WireMessage (7 variants), content types|
|
||||
| message | WireMessage (8 variants incl. CallSignal)|
|
||||
| sender_keys | Sender Key encrypt/decrypt/rotate |
|
||||
| history | Encrypted backup format |
|
||||
| ethereum | secp256k1, Keccak-256, EIP-55 |
|
||||
@@ -121,18 +147,29 @@ Built on the Phase 1 foundation to deliver a complete messaging experience:
|
||||
|
||||
## Test Suite
|
||||
|
||||
28 tests across the protocol crate:
|
||||
72 tests across protocol + client crates:
|
||||
|
||||
### Protocol Tests (28)
|
||||
|
||||
| Module | Tests | Coverage |
|
||||
|---------------|-------|---------------------------------------------|
|
||||
| identity | 3 | Deterministic derivation, mnemonic roundtrip, fingerprint format |
|
||||
| crypto | 4 | AEAD roundtrip, wrong key, wrong AAD, HKDF determinism |
|
||||
| x3dh | ~4 | Initiate/respond, shared secret match, with/without OTPK |
|
||||
| ratchet | ~6 | Encrypt/decrypt, out-of-order, multiple messages, ping-pong |
|
||||
| x3dh | 1 | Shared secret match between Alice and Bob |
|
||||
| ratchet | 5 | Basic, bidirectional, multiple, out-of-order, 100 messages |
|
||||
| sender_keys | 4 | Basic encrypt/decrypt, multiple messages, rotation, old key rejection |
|
||||
| ethereum | 5 | Deterministic derivation, address format, checksum, sign/verify, different seeds |
|
||||
| history | 2 | Roundtrip encryption, wrong seed rejection |
|
||||
| prekey | ~2 | Bundle generation, signature verification |
|
||||
| prekey | 3 | SPK verify, tamper detection, OTPK generation |
|
||||
| mnemonic | 1 | BIP39 roundtrip |
|
||||
|
||||
### Client Tests (44)
|
||||
|
||||
| Module | Tests | Coverage |
|
||||
|---------------|-------|---------------------------------------------|
|
||||
| tui::types | 10 | App init, scroll/connected defaults, ChatLine timestamps, normfp, add_message |
|
||||
| tui::input | 25 | 8 text editing, 7 cursor movement, 2 quit, 8 scroll keybindings |
|
||||
| tui::draw | 9 | Rendering smoke, header fingerprint, connection dot (red/green), timestamps, scroll show/hide, unread badge |
|
||||
|
||||
---
|
||||
|
||||
@@ -224,11 +261,14 @@ Built on the Phase 1 foundation to deliver a complete messaging experience:
|
||||
- Cross-compilation CI (Linux x86/ARM, macOS, Windows, WASM)
|
||||
- PWA: service worker, offline shell, install prompt
|
||||
|
||||
### Priority Order
|
||||
### Priority Order (Updated v0.0.21)
|
||||
|
||||
1. Federation (Phase 3) — enables multi-server deployment
|
||||
2. Mule protocol (Phase 4) — core differentiator for warzone use
|
||||
3. Sealed sender (Phase 6) — strongest metadata privacy
|
||||
4. Push notifications (Phase 7) — usability for mobile/desktop
|
||||
5. Transport fallbacks (Phase 5) — Bluetooth, LoRa
|
||||
6. Polish (Phase 7) — rate limiting, admin tools, CI
|
||||
1. **Security (FC-P1)** — auth enforcement, rate limiting, device revocation
|
||||
2. **TUI call integration (FC-P2)** — /call, /accept, /hangup commands
|
||||
3. **Web call integration (FC-P3)** — WASM CallSignal + browser call UI
|
||||
4. **Protocol hardening (FC-P4)** — session/message versioning
|
||||
5. Federation (Phase 3) — multi-server deployment
|
||||
6. Mule protocol (Phase 4) — physical delivery
|
||||
7. Polish (FC-P6) — search, reactions, typing indicators
|
||||
|
||||
See `TASK_PLAN.md` for the detailed task breakdown with IDs and dependencies.
|
||||
|
||||
Reference in New Issue
Block a user