docs: add features section to README

This commit is contained in:
Michel de Graaf
2026-07-20 11:03:24 +02:00
parent c463d80b3c
commit 96ec2a27ab
+21 -6
View File
@@ -1,14 +1,31 @@
# Soulseek-rs 🦀 # Soulseek-rs 🦀
Souleek-rs is a Soulseek library and client built in Rust. It's Soulseek-rs is a Soulseek library and client built in Rust. Soulseek is a
under development and not yet ready for use. Soulseek is a closed-source P2P closed-source P2P file-sharing network from the 2000s. It's still used by
file-sharing network from the 2000s. It's still used by music enthusiasts music enthusiasts around the world to share niche music.
around the world to share niche music.
## 🎥 Demo ## 🎥 Demo
![CLI Demo](fixtures/demo.gif) ![CLI Demo](fixtures/demo.gif)
## Features
- **Search & download** — search the network, pick results in the TUI, and
queue downloads with pause, resume, and retry
- **Sharing** — point `--shared-dir` at a directory and your files show up in
searches; peers can browse and download them
- **Browse** — list any user's shared files and download straight from the tree
- **Chat rooms** — list, join, and talk in public rooms, several open at once
- **Private messages** — send and receive messages, with an inbox in the TUI
- **Firewalled peers** — downloads and browsing fall back to server-brokered
connections when a peer can't be reached directly
- **Automatic port mapping** — opens your listen port via UPnP-IGD and
NAT-PMP, with a `portmap` subcommand to test your router
- **TUI and CLI** — a full terminal interface, plus scriptable subcommands
(`search`, `message`, `browse`, `rooms`, `chat`, `portmap`)
- **Zero-dependency library** — the protocol crate uses only the Rust
standard library, down to its own zlib inflate and md5
## Project Goals ## Project Goals
This project is a learning exercise to explore Rust. I've been using Soulseek This project is a learning exercise to explore Rust. I've been using Soulseek
@@ -150,8 +167,6 @@ To run the project in development mode with debug output and trace output:
RUST_LOG=trace cargo run RUST_LOG=trace cargo run
``` ```
## Development
To run the tests: To run the tests:
```bash ```bash