null-talk v2.0.0: The Protocol Overhaul 🚀
This major release marks a complete architectural shift for null-talk, moving from a simple text-based system to a high-performance, binary-encoded secure relay. Version 2 focuses on scalability, peer-to-peer security, and an improved terminal user experience.
🌟 New Features
1. Custom Binary Protocol
We have officially moved away from text/line-based communication. The new custom binary protocol reduces overhead and significantly improves the system's robustness to malformed packet attacks.
2. Switchboard Architecture (High Concurrency)
The server has been rewritten to use a Peer Map (DashMap) architecture.
- Performance: Eliminated the global queue (Fan-In) bottleneck.
- Stability: Prevents OOM (Out of Memory) issues by utilising bounded channels and a non-blocking switchboard to route messages between users.
- Scale: Confirmed support for high-concurrency connections in stress tests.
3. DM Handshake & Double Encryption 🔐
Privacy has doubled. In addition to transport security, Version 2 introduces:
- Client-to-Client Handshake: Establish private sessions directly with other users.
- Payload Encryption: The server now acts as a "blind relay"—it moves data but cannot decrypt the inner message payload.
4. Advanced Vim-inspired TUI
The ratatui client has been overhauled with a more intuitive interface:
- Vim Mode Support: Switch seamlessly between NORMAL, INSERT, and COMMAND modes.
- Dual-Pane Layout: Better management of active users and chat history.
- Real-time Error Reporting: Debug handshake or network issues directly in the TUI footer.
🛠️ Technical Improvements
- Security: Strict OpenSSH RSA challenge-response during initial identity verification.
- Networking: Improved handling of TCP Window Updates and
PSHflags for low-latency delivery. - Infrastructure: Cross-platform binaries are now automatically generated for Linux (x86/ARM), macOS, and Windows.
⚠️ Breaking Changes
- Client/Server Compatibility: Version 2.x is NOT compatible with Version 1.x due to the new binary protocol. Both client and server must be upgraded.