add docs, protocol, plugins, README, CHANGELOG
This commit is contained in:
parent
1d2209bfac
commit
f262da222b
44 changed files with 9269 additions and 0 deletions
214
docs/06-roadmap.md
Normal file
214
docs/06-roadmap.md
Normal 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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue