From 21f60df1d9f392f430f9326c7db15557220916f4 Mon Sep 17 00:00:00 2001
From: Michel de Graaf
Date: Tue, 18 Aug 2026 08:40:23 +0200
Subject: [PATCH 01/11] chore: release v14.1.2
---
CHANGELOG.md | 6 ++++++
Cargo.lock | 4 ++--
Cargo.toml | 2 +-
soulseek-rs/Cargo.toml | 2 +-
4 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1b5a89e..7e46cdd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [14.1.2](https://github.com/michel/soulseek-rs/compare/v14.1.1...v14.1.2) - 2026-08-18
+
+### Other
+
+- drop bot wording in favor of client
+
## [14.1.1](https://github.com/michel/soulseek-rs/compare/v14.1.0...v14.1.1) - 2026-08-17
### Fixed
diff --git a/Cargo.lock b/Cargo.lock
index 25fb7b8..882d003 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2545,7 +2545,7 @@ checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
[[package]]
name = "soulseek-rs"
-version = "14.1.1"
+version = "14.1.2"
dependencies = [
"chrono",
"clap",
@@ -2568,7 +2568,7 @@ dependencies = [
[[package]]
name = "soulseek-rs-lib"
-version = "14.1.1"
+version = "14.1.2"
dependencies = [
"libc",
]
diff --git a/Cargo.toml b/Cargo.toml
index 4cfe559..d516621 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -3,7 +3,7 @@ members = ["soulseek-rs-lib", "soulseek-rs"]
resolver = "2"
[workspace.package]
-version = "14.1.1"
+version = "14.1.2"
authors = ["Michel de Graaf"]
edition = "2024"
license = "MIT"
diff --git a/soulseek-rs/Cargo.toml b/soulseek-rs/Cargo.toml
index 2464872..d37be34 100644
--- a/soulseek-rs/Cargo.toml
+++ b/soulseek-rs/Cargo.toml
@@ -25,7 +25,7 @@ path = "src/lib.rs"
workspace = true
[dependencies]
-soulseek-rs-lib = { version = "14.1.1", path = "../soulseek-rs-lib" }
+soulseek-rs-lib = { version = "14.1.2", path = "../soulseek-rs-lib" }
clap = { version = "4.6.2", features = ["derive", "color", "wrap_help", "env"] }
clap_complete = "4.6.7"
From e78cdadf69a543b0ad2f89380e0bef2fa77d173a Mon Sep 17 00:00:00 2001
From: Michel de Graaf
Date: Tue, 18 Aug 2026 16:09:00 +0200
Subject: [PATCH 02/11] docs(website): list Player and Staccato, fix install
pill overflow on mobile
---
website/src/components/ui/command-pill.tsx | 2 +-
website/src/pages/community.tsx | 10 ++++++++++
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/website/src/components/ui/command-pill.tsx b/website/src/components/ui/command-pill.tsx
index 65a0f05..4f04ed9 100644
--- a/website/src/components/ui/command-pill.tsx
+++ b/website/src/components/ui/command-pill.tsx
@@ -24,7 +24,7 @@ export const CommandPill = ({ text, className }: CommandPillProps) => {
$
- {text}
+ {text} {
downloader with library quality upgrading: it scans your collection, finds
albums below your bitrate bar, and fetches better copies.
+
+ Player — local-first music player
+ built with Tauri and Vue for desktop and Android, with Soulseek search
+ alongside metadata editing, smart playlists and LAN sync.
+
+
+ Staccato — lightweight terminal
+ music player with a foobar2000-inspired layout, streaming straight from
+ the network with album covers in the terminal.
+
Built something on soulseek-rs-lib? Open a pull request to get
listed, and{' '}
From 5c8d0088c50fb0df2f0bb750a49d6905e2b97e32 Mon Sep 17 00:00:00 2001
From: Michel de Graaf
Date: Tue, 18 Aug 2026 16:16:18 +0200
Subject: [PATCH 03/11] docs(website): move project links into LINKS
---
website/src/lib/links.ts | 2 ++
website/src/pages/community.tsx | 4 ++--
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/website/src/lib/links.ts b/website/src/lib/links.ts
index 00019df..be69ec3 100644
--- a/website/src/lib/links.ts
+++ b/website/src/lib/links.ts
@@ -14,6 +14,8 @@ export const LINKS = {
slsknet: 'https://www.slsknet.org',
seeleseek: 'https://seeleseek.net',
seakarr: 'https://github.com/binhex/seakarr',
+ player: 'https://github.com/verncat/player',
+ staccato: 'https://github.com/bladew0rks/staccato',
minorVersions: 'https://github.com/michel/soulseek-rs/issues/12',
} as const
diff --git a/website/src/pages/community.tsx b/website/src/pages/community.tsx
index 1158213..a70d2bc 100644
--- a/website/src/pages/community.tsx
+++ b/website/src/pages/community.tsx
@@ -275,12 +275,12 @@ export const Community = () => {
albums below your bitrate bar, and fetches better copies.
- Player — local-first music player
+ Player — local-first music player
built with Tauri and Vue for desktop and Android, with Soulseek search
alongside metadata editing, smart playlists and LAN sync.
- Staccato — lightweight terminal
+ Staccato — lightweight terminal
music player with a foobar2000-inspired layout, streaming straight from
the network with album covers in the terminal.
From a5d44d7611a99d121dadf93ce6799e3118b0a59f Mon Sep 17 00:00:00 2001
From: Michel de Graaf
Date: Tue, 18 Aug 2026 16:18:27 +0200
Subject: [PATCH 04/11] docs(website): drop soulfind server link from footer
---
website/src/components/layout/footer.tsx | 65 +++++++++++++-----------
1 file changed, 35 insertions(+), 30 deletions(-)
diff --git a/website/src/components/layout/footer.tsx b/website/src/components/layout/footer.tsx
index 20c83b0..d6a856f 100644
--- a/website/src/components/layout/footer.tsx
+++ b/website/src/components/layout/footer.tsx
@@ -1,62 +1,67 @@
-import { Link } from 'react-router'
+import { Link } from "react-router";
-import { Wordmark } from '@/components/brand/wordmark'
-import { Wrap } from '@/components/ui/layout'
-import { LINKS, VERSION } from '@/lib/links'
+import { Wordmark } from "@/components/brand/wordmark";
+import { Wrap } from "@/components/ui/layout";
+import { LINKS, VERSION } from "@/lib/links";
interface FooterLink {
- label: string
- href: string
+ label: string;
+ href: string;
}
interface FooterColumn {
- heading: string
- links: readonly FooterLink[]
+ heading: string;
+ links: readonly FooterLink[];
}
const COLUMNS: readonly FooterColumn[] = [
{
- heading: 'Project',
+ heading: "Project",
links: [
- { label: 'GitHub', href: LINKS.gh },
- { label: 'Issues', href: LINKS.issues },
- { label: 'Releases', href: LINKS.releases },
- { label: 'Changelog', href: LINKS.changelog },
- { label: 'soulfind server', href: LINKS.soulfind },
+ { label: "GitHub", href: LINKS.gh },
+ { label: "Issues", href: LINKS.issues },
+ { label: "Releases", href: LINKS.releases },
+ { label: "Changelog", href: LINKS.changelog },
],
},
{
- heading: 'Packages',
+ heading: "Packages",
links: [
- { label: 'crates.io · client', href: LINKS.cratesClient },
- { label: 'crates.io · lib', href: LINKS.cratesLib },
- { label: 'docs.rs', href: LINKS.docsrs },
- { label: 'rustup', href: LINKS.rustup },
+ { label: "crates.io · client", href: LINKS.cratesClient },
+ { label: "crates.io · lib", href: LINKS.cratesLib },
+ { label: "docs.rs", href: LINKS.docsrs },
+ { label: "rustup", href: LINKS.rustup },
],
},
{
- heading: 'Read',
+ heading: "Read",
links: [
- { label: 'Docs', href: '/docs' },
- { label: 'Install', href: '/install' },
- { label: 'Community', href: '/community' },
- { label: 'License · MIT', href: LINKS.license },
+ { label: "Docs", href: "/docs" },
+ { label: "Install", href: "/install" },
+ { label: "Community", href: "/community" },
+ { label: "License · MIT", href: LINKS.license },
],
},
-]
+];
-const LINK_CLASS = 'text-[12.5px] text-secondary hover:text-primary sm:text-[13px]'
+const LINK_CLASS =
+ "text-[12.5px] text-secondary hover:text-primary sm:text-[13px]";
const FooterAnchor = ({ label, href }: FooterLink) =>
- href.startsWith('/') ? (
+ href.startsWith("/") ? (
{label}
) : (
-
+
{label}
- )
+ );
export const Footer = () => (
-)
+);
From daec81de5031e513a4d7e541d39461d2259e51a2 Mon Sep 17 00:00:00 2001
From: Michel de Graaf
Date: Tue, 1 Sep 2026 15:26:38 +0200
Subject: [PATCH 05/11] chore: release v14.2.0
---
CHANGELOG.md | 19 +++++++++++++++++++
Cargo.lock | 4 ++--
Cargo.toml | 2 +-
soulseek-rs/Cargo.toml | 2 +-
4 files changed, 23 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7e46cdd..a7d7c79 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [14.2.0](https://github.com/michel/soulseek-rs/compare/v14.1.2...v14.2.0) - 2026-09-01
+
+### Added
+
+- *(daemon)* publish room member statistics over RPC and the CLI
+- *(tui)* dismiss a finished download with d
+- *(lib)* watch and unwatch users (WatchUser 5 / UnwatchUser 6)
+
+### Fixed
+
+- *(cli)* keep `room users` text output a bare roster
+- slotsfull is occupancy, not free slots, and cover it end to end
+
+### Other
+
+- release v14.1.2
+- Merge remote-tracking branch 'origin/develop' into feat/room-member-stats
+- *(e2e)* cover watching against soulfind, and read the reply as written
+
## [14.1.2](https://github.com/michel/soulseek-rs/compare/v14.1.1...v14.1.2) - 2026-08-18
### Other
diff --git a/Cargo.lock b/Cargo.lock
index 882d003..5a108b6 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2545,7 +2545,7 @@ checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
[[package]]
name = "soulseek-rs"
-version = "14.1.2"
+version = "14.2.0"
dependencies = [
"chrono",
"clap",
@@ -2568,7 +2568,7 @@ dependencies = [
[[package]]
name = "soulseek-rs-lib"
-version = "14.1.2"
+version = "14.2.0"
dependencies = [
"libc",
]
diff --git a/Cargo.toml b/Cargo.toml
index d516621..5158546 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -3,7 +3,7 @@ members = ["soulseek-rs-lib", "soulseek-rs"]
resolver = "2"
[workspace.package]
-version = "14.1.2"
+version = "14.2.0"
authors = ["Michel de Graaf"]
edition = "2024"
license = "MIT"
diff --git a/soulseek-rs/Cargo.toml b/soulseek-rs/Cargo.toml
index d37be34..070f547 100644
--- a/soulseek-rs/Cargo.toml
+++ b/soulseek-rs/Cargo.toml
@@ -25,7 +25,7 @@ path = "src/lib.rs"
workspace = true
[dependencies]
-soulseek-rs-lib = { version = "14.1.2", path = "../soulseek-rs-lib" }
+soulseek-rs-lib = { version = "14.2.0", path = "../soulseek-rs-lib" }
clap = { version = "4.6.2", features = ["derive", "color", "wrap_help", "env"] }
clap_complete = "4.6.7"
From 28325685dfd1927bf1024b357c85308d2b3b7ee4 Mon Sep 17 00:00:00 2001
From: Michel de Graaf
Date: Thu, 3 Sep 2026 11:02:38 +0200
Subject: [PATCH 06/11] chore: release v14.2.1
---
CHANGELOG.md | 10 ++++++++++
Cargo.lock | 4 ++--
Cargo.toml | 2 +-
soulseek-rs/Cargo.toml | 2 +-
4 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a7d7c79..7b245dc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [14.2.1](https://github.com/michel/soulseek-rs/compare/v14.2.0...v14.2.1) - 2026-09-03
+
+### Fixed
+
+- *(daemon)* reconnect after the server session drops
+
+### Other
+
+- Merge branch 'develop'
+
## [14.2.0](https://github.com/michel/soulseek-rs/compare/v14.1.2...v14.2.0) - 2026-09-01
### Added
diff --git a/Cargo.lock b/Cargo.lock
index 5a108b6..eb93b36 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2545,7 +2545,7 @@ checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
[[package]]
name = "soulseek-rs"
-version = "14.2.0"
+version = "14.2.1"
dependencies = [
"chrono",
"clap",
@@ -2568,7 +2568,7 @@ dependencies = [
[[package]]
name = "soulseek-rs-lib"
-version = "14.2.0"
+version = "14.2.1"
dependencies = [
"libc",
]
diff --git a/Cargo.toml b/Cargo.toml
index 5158546..f9eeb87 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -3,7 +3,7 @@ members = ["soulseek-rs-lib", "soulseek-rs"]
resolver = "2"
[workspace.package]
-version = "14.2.0"
+version = "14.2.1"
authors = ["Michel de Graaf"]
edition = "2024"
license = "MIT"
diff --git a/soulseek-rs/Cargo.toml b/soulseek-rs/Cargo.toml
index 070f547..a05b304 100644
--- a/soulseek-rs/Cargo.toml
+++ b/soulseek-rs/Cargo.toml
@@ -25,7 +25,7 @@ path = "src/lib.rs"
workspace = true
[dependencies]
-soulseek-rs-lib = { version = "14.2.0", path = "../soulseek-rs-lib" }
+soulseek-rs-lib = { version = "14.2.1", path = "../soulseek-rs-lib" }
clap = { version = "4.6.2", features = ["derive", "color", "wrap_help", "env"] }
clap_complete = "4.6.7"
From d397e92085a9bfed501f00dd645433d3960bcbdc Mon Sep 17 00:00:00 2001
From: Michel de Graaf
Date: Sun, 6 Sep 2026 22:01:42 +0200
Subject: [PATCH 07/11] chore: release v15.0.0
---
CHANGELOG.md | 13 +++++++++++++
Cargo.lock | 4 ++--
Cargo.toml | 2 +-
soulseek-rs/Cargo.toml | 2 +-
4 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7b245dc..c42d7c5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [15.0.0](https://github.com/michel/soulseek-rs/compare/v14.2.1...v15.0.0) - 2026-09-06
+
+### Added
+
+- *(tui)* scroll long result names and page through results
+- cancel a download from the TUI, the CLI, and the daemon
+
+### Other
+
+- Merge branch 'develop'
+- Merge branch 'develop' into feat/tui-results-navigation
+- *(tui)* bound the name scroll walk by the column width
+
## [14.2.1](https://github.com/michel/soulseek-rs/compare/v14.2.0...v14.2.1) - 2026-09-03
### Fixed
diff --git a/Cargo.lock b/Cargo.lock
index adde2a4..d73ad92 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2545,7 +2545,7 @@ checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
[[package]]
name = "soulseek-rs"
-version = "14.2.1"
+version = "15.0.0"
dependencies = [
"chrono",
"clap",
@@ -2569,7 +2569,7 @@ dependencies = [
[[package]]
name = "soulseek-rs-lib"
-version = "14.2.1"
+version = "15.0.0"
dependencies = [
"libc",
]
diff --git a/Cargo.toml b/Cargo.toml
index f9eeb87..0373472 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -3,7 +3,7 @@ members = ["soulseek-rs-lib", "soulseek-rs"]
resolver = "2"
[workspace.package]
-version = "14.2.1"
+version = "15.0.0"
authors = ["Michel de Graaf"]
edition = "2024"
license = "MIT"
diff --git a/soulseek-rs/Cargo.toml b/soulseek-rs/Cargo.toml
index 562c756..cf9e06c 100644
--- a/soulseek-rs/Cargo.toml
+++ b/soulseek-rs/Cargo.toml
@@ -25,7 +25,7 @@ path = "src/lib.rs"
workspace = true
[dependencies]
-soulseek-rs-lib = { version = "14.2.1", path = "../soulseek-rs-lib" }
+soulseek-rs-lib = { version = "15.0.0", path = "../soulseek-rs-lib" }
clap = { version = "4.6.2", features = ["derive", "color", "wrap_help", "env"] }
clap_complete = "4.6.7"
From 4781e3571a1dda7b1363ca6bcded7727a6462bc4 Mon Sep 17 00:00:00 2001
From: Michel de Graaf
Date: Mon, 7 Sep 2026 11:13:52 +0200
Subject: [PATCH 08/11] chore: release v16.0.0
---
CHANGELOG.md | 12 ++++++++++++
Cargo.lock | 4 ++--
Cargo.toml | 2 +-
soulseek-rs/Cargo.toml | 2 +-
4 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c42d7c5..687c750 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [16.0.0](https://github.com/michel/soulseek-rs/compare/v15.0.0...v16.0.0) - 2026-09-07
+
+### Added
+
+- *(tui)* scroll long names in every list and page through popups and chat
+- *(tui)* results across the top, with panes you can hide, zoom and Tab through
+
+### Other
+
+- Merge remote-tracking branch 'origin/develop'
+- *(tui)* fold the keys overlay onto LogView and dedupe the pane lookups
+
## [15.0.0](https://github.com/michel/soulseek-rs/compare/v14.2.1...v15.0.0) - 2026-09-06
### Added
diff --git a/Cargo.lock b/Cargo.lock
index d73ad92..9190392 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2545,7 +2545,7 @@ checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
[[package]]
name = "soulseek-rs"
-version = "15.0.0"
+version = "16.0.0"
dependencies = [
"chrono",
"clap",
@@ -2569,7 +2569,7 @@ dependencies = [
[[package]]
name = "soulseek-rs-lib"
-version = "15.0.0"
+version = "16.0.0"
dependencies = [
"libc",
]
diff --git a/Cargo.toml b/Cargo.toml
index 0373472..4e0b120 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -3,7 +3,7 @@ members = ["soulseek-rs-lib", "soulseek-rs"]
resolver = "2"
[workspace.package]
-version = "15.0.0"
+version = "16.0.0"
authors = ["Michel de Graaf"]
edition = "2024"
license = "MIT"
diff --git a/soulseek-rs/Cargo.toml b/soulseek-rs/Cargo.toml
index cf9e06c..e77d000 100644
--- a/soulseek-rs/Cargo.toml
+++ b/soulseek-rs/Cargo.toml
@@ -25,7 +25,7 @@ path = "src/lib.rs"
workspace = true
[dependencies]
-soulseek-rs-lib = { version = "15.0.0", path = "../soulseek-rs-lib" }
+soulseek-rs-lib = { version = "16.0.0", path = "../soulseek-rs-lib" }
clap = { version = "4.6.2", features = ["derive", "color", "wrap_help", "env"] }
clap_complete = "4.6.7"
From 6d47b3e5945baa744bfbf5f1201ea8b203a9f1ee Mon Sep 17 00:00:00 2001
From: Michel de Graaf
Date: Mon, 7 Sep 2026 16:54:22 +0200
Subject: [PATCH 09/11] Update README description for clarity and detail
---
README.md | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/README.md b/README.md
index ee80220..cfea6a3 100644
--- a/README.md
+++ b/README.md
@@ -5,8 +5,7 @@
-**A soulseek client for the terminal. Built for agents and people who live
-there.**
+**A Soulseek client and lib built in Rust 🦀 for the terminal: TUI, CLI and daemon. Built for agents and people who live there.**
Search the network, share your files, browse someone's collection, join a room.
It runs over ssh on the machine where your music already lives.
From 943abfab431022ae9435785f3bcda5ca911e82a7 Mon Sep 17 00:00:00 2001
From: Michel de Graaf
Date: Mon, 7 Sep 2026 18:04:21 +0200
Subject: [PATCH 10/11] chore: release v17.0.0
---
CHANGELOG.md | 27 +++++++++++++++++++++++++++
Cargo.lock | 4 ++--
Cargo.toml | 2 +-
soulseek-rs/Cargo.toml | 2 +-
4 files changed, 31 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 687c750..dd0783d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,33 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [17.0.0](https://github.com/michel/soulseek-rs/compare/v16.0.0...v17.0.0) - 2026-09-07
+
+### Added
+
+- *(lib)* report each finished upload's rate to the server
+- *(lib)* surface server announcements as messages from "server"
+- *(lib)* answer UserInfoRequest with our slots and queue
+- *(lib)* answer FolderContentsRequest with the folder's listing
+
+### Fixed
+
+- *(lib)* keep the log level in an atomic and let hosts change it
+- *(lib)* compress peer listings and reject a bad zlib checksum
+- *(lib)* report a download's rate from the bytes actually read
+- *(lib)* keep the server connection alive with TCP keepalive
+- *(lib)* advertise real slot, speed and queue figures in search replies
+- *(lib)* route on the full four-byte message code
+- *(lib)* give each search its own token
+- *(lib)* cap a search reply at 150 files
+
+### Other
+
+- *(lib)* split the server actor's value types and tests out
+- *(lib)* lowercase each shared path once at scan time
+- *(lib)* read downloads in 64 KiB slices
+- Merge pull request #69 from michel/lib/user-info
+
## [16.0.0](https://github.com/michel/soulseek-rs/compare/v15.0.0...v16.0.0) - 2026-09-07
### Added
diff --git a/Cargo.lock b/Cargo.lock
index 9190392..44e9b35 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2545,7 +2545,7 @@ checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
[[package]]
name = "soulseek-rs"
-version = "16.0.0"
+version = "17.0.0"
dependencies = [
"chrono",
"clap",
@@ -2569,7 +2569,7 @@ dependencies = [
[[package]]
name = "soulseek-rs-lib"
-version = "16.0.0"
+version = "17.0.0"
dependencies = [
"libc",
]
diff --git a/Cargo.toml b/Cargo.toml
index 4e0b120..3108ac5 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -3,7 +3,7 @@ members = ["soulseek-rs-lib", "soulseek-rs"]
resolver = "2"
[workspace.package]
-version = "16.0.0"
+version = "17.0.0"
authors = ["Michel de Graaf"]
edition = "2024"
license = "MIT"
diff --git a/soulseek-rs/Cargo.toml b/soulseek-rs/Cargo.toml
index e77d000..4dba53f 100644
--- a/soulseek-rs/Cargo.toml
+++ b/soulseek-rs/Cargo.toml
@@ -25,7 +25,7 @@ path = "src/lib.rs"
workspace = true
[dependencies]
-soulseek-rs-lib = { version = "16.0.0", path = "../soulseek-rs-lib" }
+soulseek-rs-lib = { version = "17.0.0", path = "../soulseek-rs-lib" }
clap = { version = "4.6.2", features = ["derive", "color", "wrap_help", "env"] }
clap_complete = "4.6.7"
From bb31c9e7a4b7af7217071ba578ad2edd70ab4082 Mon Sep 17 00:00:00 2001
From: Michel de Graaf
Date: Tue, 8 Sep 2026 02:09:34 +0200
Subject: [PATCH 11/11] chore: release v18.0.0
---
CHANGELOG.md | 28 ++++++++++++++++++++++++++++
Cargo.lock | 4 ++--
Cargo.toml | 2 +-
soulseek-rs/Cargo.toml | 2 +-
4 files changed, 32 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index dd0783d..5315d33 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [18.0.0](https://github.com/michel/soulseek-rs/compare/v17.0.0...v18.0.0) - 2026-09-08
+
+### Added
+
+- *(lib)* carry audio attributes in browse and folder listings
+- *(lib)* read audio attributes from shared files at scan time
+- *(lib)* join the distributed search network as a leaf
+- *(lib)* decode distributed frames and announce a parentless stance
+
+### Fixed
+
+- *(lib)* free a silent parent's slot and pace the moves we report
+- *(lib)* harden the distributed leaf against hostile and slow parents
+- *(lib)* count the ID3 tag once and honour CRC frames when probing an MP3
+- *(lib)* parse what a peer sent before acting on its close
+- *(lib)* retire a dialling actor at once and drain the socket while retired
+- *(stress)* serve a browse that lands while an offer awaits its answer
+- *(lib)* keep a replaced peer connection open for the reply in flight
+- *(lib)* let an unanswered upload offer expire
+
+### Other
+
+- Merge branch 'develop'
+- *(lib)* keep the actors inside the crate and mark the growing enums
+- *(lib)* export the ConnectionType parse error and document what hosts can still match
+- *(lib)* move the peer actor's tests to their own file
+- gate pull requests on the stress benchmark losing no work
+
## [17.0.0](https://github.com/michel/soulseek-rs/compare/v16.0.0...v17.0.0) - 2026-09-07
### Added
diff --git a/Cargo.lock b/Cargo.lock
index 44e9b35..687b0c5 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2545,7 +2545,7 @@ checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
[[package]]
name = "soulseek-rs"
-version = "17.0.0"
+version = "18.0.0"
dependencies = [
"chrono",
"clap",
@@ -2569,7 +2569,7 @@ dependencies = [
[[package]]
name = "soulseek-rs-lib"
-version = "17.0.0"
+version = "18.0.0"
dependencies = [
"libc",
]
diff --git a/Cargo.toml b/Cargo.toml
index 3108ac5..7b51201 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -3,7 +3,7 @@ members = ["soulseek-rs-lib", "soulseek-rs"]
resolver = "2"
[workspace.package]
-version = "17.0.0"
+version = "18.0.0"
authors = ["Michel de Graaf"]
edition = "2024"
license = "MIT"
diff --git a/soulseek-rs/Cargo.toml b/soulseek-rs/Cargo.toml
index 4dba53f..96199f1 100644
--- a/soulseek-rs/Cargo.toml
+++ b/soulseek-rs/Cargo.toml
@@ -25,7 +25,7 @@ path = "src/lib.rs"
workspace = true
[dependencies]
-soulseek-rs-lib = { version = "17.0.0", path = "../soulseek-rs-lib" }
+soulseek-rs-lib = { version = "18.0.0", path = "../soulseek-rs-lib" }
clap = { version = "4.6.2", features = ["derive", "color", "wrap_help", "env"] }
clap_complete = "4.6.7"