add docs, protocol, plugins, README, CHANGELOG

This commit is contained in:
loki5512344 2026-07-09 12:30:55 +02:00
parent 1d2209bfac
commit f262da222b
Signed by: boba
GPG key ID: 253067914055423B
44 changed files with 9269 additions and 0 deletions

214
docs/06-roadmap.md Normal file
View file

@ -0,0 +1,214 @@
# Roadmap
---
## Phase 1 — MVP
Goal: a working voice + chat system you can actually use.
### Server
- [x] LNEx v1 protocol spec
- [x] Gateway: auth, sessions, channels, text chat
- [x] Voice node: UDP relay (jitter buffer code exists, not wired into relay yet)
- [x] SQLite storage: message history, user records
- [x] Docker + systemd deployment ([Dockerfile](../Dockerfile), [docker-compose.yml](../docker-compose.yml))
- [x] config.toml reference ([configuration.md](../03-server/configuration.md), [dev/README.md](../../dev/README.md))
### Client
- [x] Identity: keypair generation, Ed25519 auth
- [x] Node switcher — bookmarks with save/remove
- [x] Channel list: text + voice
- [x] Text chat
- [x] Voice chat: push-to-talk, VAD, always-on modes
- [x] Noise suppression (RNNoise, feature-gated)
- [x] Settings: voice, audio, network, identity, keybinds
- [x] Latency indicator
### Protocol
- [x] Packet format finalized (JSON framing in Phase 1)
- [x] Error codes documented
---
## Phase 1.1 — Hardening & Core Features
Goal: production-safe for small private communities.
### Encryption (Priority 1) ✅ DONE
- [x] Replace plaintext with ChaCha20-Poly1305 on all packets
- [x] X25519 ECDH key exchange during HELLO handshake
- [x] HKDF-SHA256 key derivation (client→server / server→client keys)
- [x] Encrypted TCP (control) + UDP (voice) paths
- [x] Forward secrecy via ephemeral session keys
- [x] Session nonce management for replay protection
All traffic is now encrypted. See [features/encryption.md](05-features/encryption.md).
### Direct Messages ✅ DONE
- [x] New packet type: `DM_MESSAGE` (separate from `CHAT_MESSAGE`)
- [x] Gateway routing: create private DM channel on first message
- [x] DB schema: `direct_messages` + `dm_messages` tables
- [x] UI: DM list in sidebar (like Discord)
- [x] Unread count tracking
- [x] Message sync to both participants
- [x] DM history search bar
See [features/direct-messages.md](05-features/direct-messages.md). **Backend and UI complete.**
### Private Mode ✅ DONE
- [x] Config flag: `[federation] enabled = false` / `[server] mode = "private"`
- [x] Server cannot see or reach other servers when private
- [x] No federation packets sent
- [x] Makes VNOX safe for single-server deployment (OwnCord-style)
### UI Refresh
- [x] Evaluate Slint vs improving egui design system — **staying on egui**
- [x] Custom dark theme with accent color support (#E67E22 orange)
- [x] Redesigned channel list and user bar
- [x] Consistency pass across all settings panels
- [ ] Slint migration plan exists at `docs/superpowers/plans/2026-05-31-slint-migration.md` (deferred to Phase 2+)
### Client Polish
- [x] Audio device labels in settings (live cpal enumeration)
- [x] Opus bitrate slider (8–128 kbps)
- [x] Jitter buffer size and adaptive mode
- [x] Per-user volume control (client-side mix)
- [x] Keybind recording UI (capture keystroke, not type string)
---
## Phase 1.2 — Community Foundation
Goal: guilds, roles, permissions, presence layer.
### Community Model (Priority 1) ✅ DONE
- [x] Guild system: create, list, delete, settings
- [x] Role system with permission bits (u64)
- [x] Permission resolution (owner → admin → roles → channel overrides)
- [x] Invite system: permanent and temporary
- [x] Guild member management: join, leave, kick
- [x] Audit log for admin actions
- [x] Invite accept popup dialog
- [x] Guild header with member count and Leave button
### Direct Messages UI ✅ DONE
- [x] DM list in sidebar (per-user, not per-guild)
- [x] DM conversation panel (similar to channel chat)
- [x] Unread badges and notification dots
- [x] Search DM history
- [x] Per-conversation volume controls
### Presence System ✅ DONE
- [x] Status types: ONLINE, IDLE, DO_NOT_DISTURB, OFFLINE, INVISIBLE
- [ ] Activity status: playing, listening, watching, streaming — **deferred**
- [ ] Custom status text — **deferred**
- [x] Broadcast on login/logout
- [x] Clickable status cycler in user bar
### Friends System ✅ DONE
- [x] Friend requests
- [x] Friends list with Online / All / Pending / Blocked tabs
- [x] Pending count badge on Friends tab
- [x] Block list (placeholder UI)
- [x] Friend notifications (incoming request badge)
- [x] Add Friend popup with user-id input
- [x] Per-friend DM shortcut and remove button
### UI Refresh ✅ DONE
- [x] Sidebar restructure for guilds + DMs
- [x] Guild switcher (vertical icons on left)
- [x] Role color display in user mentions
- [x] Category collapsing
- [x] Right-hand member list panel (online/offline per channel)
---
## Phase 1.3 — Advanced Features
Goal: typing indicators, read receipts, typing states.
### Typing & Read Status ✅ DONE
- [x] Typing indicators in text channels
- [x] Read receipts per message
- [x] Last read pointer storage
- [x] Multi-user typing indicator ("Alice and Bob are typing...")
### Voice Improvements ✅ DONE
- [x] Speaking indicators with volume levels
- [x] Voice activity detection (local visualization — green dot/border on speaking)
- [x] Adaptive bitrate negotiation
- [x] Voice activity banner ("you are talking" / "someone is talking")
### Client Polish ✅ DONE
- [x] Message reactions (emoji)
- [x] Message editing (with "(edited)" marker)
- [x] Message deletion with confirmation
- [x] Per-user volume control (client-side mix)
---
## Phase 2
Goal: scalability, federation preparation, advanced security.
### Server
- [ ] TLS 1.3 on TCP control plane
- [ ] Permission system enforcement in gateway
- [ ] Rate limiting refinement
- [ ] PostgreSQL backend (sqlx support ready, config not exposed yet)
- [ ] Prometheus metrics on gateway and voice-node
- [ ] Gateway admin API (HTTP endpoint)
- [ ] Identity keypair encryption at rest (Argon2id passphrase)
### Protocol
- [ ] Protobuf schemas (replacing JSON)
- [ ] E2EE for direct messages (optional)
- [ ] E2EE for private channels (opt-in)
- [ ] Voice regions: Warsaw, Frankfurt, Amsterdam, London, New York, Singapore
### Client
- [ ] Seed phrase backup UI
- [ ] Keyfile export / import
- [ ] Per-user volume control (client-side mix)
- [ ] Overlay: Windows, Linux X11, speaking indicators, mute/deafen state
### Federation Foundation
- [ ] LNEx federation protocol spec
- [ ] Node-to-node handshake and mutual auth
- [ ] Federation discovery (DNS SRV)
### Plugins Foundation
- [ ] Plugin runtime (Deno or QuickJS — decision required)
- [ ] WebSocket RPC API v1
- [ ] Plugin manifest and permissions
- [ ] Example plugins: moderation bot, music bot
---
## Phase 3
Goal: federation ecosystem and mobile clients.
### Federation
- [ ] Text chat bridging between nodes
- [ ] Voice relay across nodes
- [ ] Channel bridging
- [ ] Federation admin controls (trust levels, denylist)
- [ ] Shared user directory
### Plugins Ecosystem
- [ ] Plugin installer in client
- [ ] Community plugin registry (basic)
- [ ] Advanced plugins: relay-switcher, analytics, moderation suite
### Mobile
- [ ] Stack decision (Flutter / React Native / Native)
- [ ] MVP: connect, text, voice, push-to-talk
- [ ] Identity import from desktop (QR / keyfile)
---
## Future ideas (unscheduled)
Spatial audio for games, adaptive bitrate relay, distributed mesh,
VNOX SDK (Rust → TypeScript → Python), offline message queue.