• v0.4.0 78713c3e22

    Version 0.4.0
    All checks were successful
    CI / Format (push) Successful in 42s
    CI / Clippy (push) Successful in 53s
    Stable

    Aelthorim released this 2026-07-26 20:00:52 +02:00 | 51 commits to main since this release

    Version 0.4.0

    Added

    • TLS support for TCP and WebSocket connections (client & server). Both the raw TCP and WebSocket listeners/connections are now wrapped with tokio-rustls, using certificates loaded from cert.pem/key.pem. The client pins the server's certificate via a RootCertStore rather than trusting a public CA chain.
    • Added tls.rs module with certificate/private-key loading logic (via rustls_pemfile) and a build_connector() helper on the client side.

    Changed

    • TcpReader/TcpWriter and WsReader/WsWriter now operate over TlsStream<TcpStream> instead of raw TCP streams or tokio-tungstenite's MaybeTlsStream.
    • Server cert/key loading now surfaces the underlying error on failure instead of a bare .expect() panic.
    • Upgraded async-trait to 0.1.91 (server, client, common crates).

    CI

    • CI workflow now runs on any branch for both pushes and pull requests.
    • Switched to a specialized rust-1.87 container image (faster than generic ubuntu-latest, toolchain preinstalled).
    • Bumped actions/checkout to 7.0.0.

    Full diff: v0.3.0...v0.4.0

    Downloads
  • v0.3.0 8326fb0ae6

    Version 0.3.0 - First release
    Some checks failed
    CI / Clippy (push) Failing after 1m39s
    CI / Format (push) Has been cancelled
    Stable

    Aelthorim released this 2026-07-19 16:31:54 +02:00 | 65 commits to main since this release

    Chat server + terminal client in Rust. Started as a "let me learn async Rust" project, now i want to show it off and get people who are interested to work on it.

    What's in

    • Register/login with argon2 password hashing
    • Accounts saved in SQLite, survive a restart
    • Session tokens, so you log in once and the client remembers you next launch
    • Works over raw TCP or WebSocket, same protocol either way, same server code underneath (check ConnectionReader/ConnectionWriter in common if you want to see how)
    • Send messages to other users by username
    • CI runs cargo fmt + clippy on every push

    What's not in yet

    • No encryption. Server sees your messages in plain text, same for anyone watching the connection. This is the big one still missing.
    • No TLS
    • No offline delivery, message just doesn't arrive if they're not connected
    • No web client yet (WebSocket support exists mainly so one can happen later)

    Protocol details are in PROTOCOL.md, build/run instructions in the README.md.

    If any of this sounds fun to work on, encryption, a web frontend, or just tearing apart the current design, open an issue or say hi.

    Downloads