diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..7060e3c --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,50 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [6.0.0](https://github.com/michel/soulseek-rs/compare/v5.0.0...v6.0.0) - 2026-07-24 + +### Breaking changes + +Library only. If you install the `soulseek-rs` binary there is nothing to do — +these affect crates depending on `soulseek-rs-lib` 5.x. Sharing moved from a +single optional directory to a list, which changed three public items. + +- `ClientSettings::shared_directory: Option` is now + `shared_directories: Vec`. `None` becomes `vec![]`, `Some(dir)` + becomes `vec![dir]`. +- `Client::shared_directory() -> Option<&str>` is replaced by + `Client::shared_directories() -> Vec`. The new + `Client::set_shared_directories(Vec)` updates the set at runtime. +- `peer::upload_peer::serve_file` takes two more parameters, + `bytes_sent: &AtomicU64` and `cancel: &AtomicBool`, which drive upload + progress and cancellation. Pass freshly constructed values to keep the old + behaviour. + +### Added + +- settings popup and uploads in the transfers pane +- update shared directories at runtime +- multiple shared directories +- conventional default download and share folders +- set aside unusable state files as .bak instead of overwriting +- persist and restore TUI state across restarts +- versioned JSON state stores for downloads, searches, rooms +- in-TUI login/registration screen +- password resolution via OS keychain and password_cmd +- config.toml settings layer (CLI > env > file > defaults) +- track uploads with progress and cancellation + +### Fixed + +- drop libdbus dependency from keyring Linux backend +- clippy cleanups in upload tracking and share plumbing + +### Other + +- persistence e2e and registration-relogin e2e; lint clean diff --git a/Cargo.lock b/Cargo.lock index 696b32b..827ff2f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2407,7 +2407,7 @@ checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "soulseek-rs" -version = "5.0.0" +version = "6.0.0" dependencies = [ "clap", "color-eyre", @@ -2425,7 +2425,7 @@ dependencies = [ [[package]] name = "soulseek-rs-lib" -version = "5.0.0" +version = "6.0.0" [[package]] name = "stable_deref_trait" diff --git a/Cargo.toml b/Cargo.toml index 2d6e863..6c294df 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ members = ["soulseek-rs-lib", "soulseek-rs"] resolver = "2" [workspace.package] -version = "5.0.0" +version = "6.0.0" authors = ["Michel de Graaf"] edition = "2024" license = "MIT" diff --git a/soulseek-rs/Cargo.toml b/soulseek-rs/Cargo.toml index 8cd1d27..32334d4 100644 --- a/soulseek-rs/Cargo.toml +++ b/soulseek-rs/Cargo.toml @@ -24,7 +24,7 @@ path = "src/lib.rs" workspace = true [dependencies] -soulseek-rs-lib = { version = "5.0.0", path = "../soulseek-rs-lib" } +soulseek-rs-lib = { version = "6.0.0", path = "../soulseek-rs-lib" } clap = { version = "4.6.2", features = ["derive", "color", "wrap_help", "env"] } ratatui = "0.30.2"