Releases: slskd/slskd
0.25.1
What's Changed
- Add case for legacy docker behavior (running as root) by @jpdillingham in #1708
- Fix bug preventing configuration changes from being applied by @jpdillingham in #1711
Full Changelog: 0.25.0...0.25.1
0.25.0
🎉 Big Release!
This release contains a number of mostly unrelated changes.
Licensing
I have added 'Additional Terms' to the AGPLv3 that clarify the conditions under which folks can distribute and modify slskd, which Section 7 of the AGPLv3 allows. These terms include preservation of notices and licenses (already required by the AGPLv3, the terms spell the requirements out explicitly), mandatory identification of modifications (again, already required), mandatory rebranding (renaming forks to something that won't be confused with slskd), and the mandatory modification of the client version supplied to the server at login.
The full text of these Additional Terms can be found at the bottom of the LICENSE in the root of the repository. I've also added a NOTICE in the hopes that folks will be drawn to it and see that the LICENSE includes Additional Terms, and I've added a FORKING.md that explains the new terms in plain English.
To explain why I've done this, I'll share an excerpt from FORKING.md:
The requirements exist for two reasons, and both are about the people who use the software.
The first is to make sure users always know they are using software licensed under the AGPL. That matters because the AGPL gives users meaningful rights: the right to know that the source code exists, the right to access it, and the right to understand what they are running. Those rights only mean something if users are actually informed of them. Requiring that the full LICENSE be included with every distribution, and that license notices be preserved everywhere they appear, ensures that no user ever ends up with a copy of this software that hides or obscures the terms under which it was released.
The second is to make sure users understand who made the software they are using. They should be able to tell where it came from, who maintains it, what has been changed and by whom, and whether it is the original project or a fork. A user who installs a fork deserves to know it is a fork. The requirements around naming, branding, source file headers, and identification notices all serve this goal. They are not intended to discourage forking, they are intended to make sure that anyone who uses a fork has an accurate picture of what they have.
With AI becoming mainstream it is now incredibly easy to fork a project and manipulate it in ways that are harmful to users and/or the server(s) the software connects to. This behavior, unfortunately, is permissible under the AGPLv3. All I can do is ensure that users aren't deceived into using these untrusted and potentially harmful forks.
Docker User/Permissions
The slskd Docker container now supports both Docker's built in --user/user: and the Linuxserver/*arr style PUID/PGID methods for running the container as a specific user. The built-in method is objectively superior, but I noticed that people frequently got hung up on permissions because they were using PUID/PGID without understanding that it wasn't supported.
These methods are mutually exclusive; users must choose one or the other. Users should also be aware that when using the PUID/PGID method, the container will chown the mounted /app directory on startup. This may be unexpected, but it is the intended behavior. The chown isn't recursive; users will need to do that themselves if needed.
Examples in the README and Docker docs have been updated to reflect these changes. I welcome any feedback about the approach in the Dockerfile or contents of the docs.
Configuration May Be Broken
Users who have configured things under the global, groups, or integration keys in the configuration file will find that the app will log an error and exit early until they apply the necessary changes. This is unfortunate, but the alternative was to not do that and allow people to continue using the app without their configuration being respected.
Pull request #1704 outlines the changes and provides an example of what needs to be done by correcting the configuration docs. tl;dr:
- Rename the
globalkey totransfers - Move all limits keys so that they appear nested under the upload key of the associated group
- Rename the
integrationkey tointegrations
These changes were made to make room for upcoming features (stay tuned!). The rename of the integration key was admittedly not necessary for that, but I figured I would sneak it in.
What's Changed
- BREAKING: Move all transfer options under a 'transfers' key by @jpdillingham in #1672
- Add errors for deprecated keys by @jpdillingham in #1698
- Update docs to reflect config changes by @jpdillingham in #1704
- Append Additional Terms to the AGPLv3 license by @jpdillingham in #1675
- Adjust NOTICE indent, add license info to startup banner by @jpdillingham in #1690
- Fix "Search Again" by @rfletcher in #1666
- Fix bug causing an error when updating the config file while the app is running by @jpdillingham in #1682
- fix favicon.ico relative path by @deepsweet in #1696
- Add BatchId and Attempts to Transfers database, change migration naming scheme by @jpdillingham in #1670
- Add the ability to specify base delay for exponential backoff, add onRetry delegate for Retry.Do by @jpdillingham in #1671
- Interlock updates of shared scanner vars by @jpdillingham in #1687
- Add support for PUID/PGID to Docker by @jpdillingham in #1695
- Bump Soulseek.NET to 9.0.0, set minor version to 760 by @jpdillingham in #1674
- Bump picomatch from 2.3.1 to 2.3.2 in /src/web by @dependabot[bot] in #1684
- Bump flatted from 3.2.7 to 3.4.2 in /src/web by @dependabot[bot] in #1676
- Bump yaml in /src/web by @dependabot[bot] in #1680
- Bump Soulseek.NET to 10.0.0 by @jpdillingham in #1691
- Bump lodash from 4.17.23 to 4.18.1 in /src/web by @dependabot[bot] in #1692
- Bump lodash-es from 4.17.23 to 4.18.1 in /src/web by @dependabot[bot] in #1689
- Upgrade to .NET 10 by @jpdillingham in #1693
- Bump axios from 1.13.5 to 1.15.0 in /src/web by @dependabot[bot] in #1694
New Contributors
- @rfletcher made their first contribution in #1666
- @deepsweet made their first contribution in #1696
Full Changelog: 0.24.5...0.25.0
0.24.5
What's Changed
- Add KnownUnsupportedTypeConverter to prevent crashes when serializing some types by @jpdillingham in #1645
- Use shared JsonSerializerOptions when cloning State by @jpdillingham in #1648
- Ensure execute bits are set on directory mode by @jpdillingham in #1656
- Bump minimatch and eslint-config-canonical in /src/web by @dependabot[bot] in #1655
- Bump rollup from 2.79.2 to 2.80.0 in /src/web by @dependabot[bot] in #1654
Full Changelog: 0.24.4...0.24.5
0.24.4
Notable change: #1632 Add VPN integration and gluetun client adds the ability to configure slskd to poll your VPN client for status and automatically update your listening port. See the docs for more details.
What's Changed
- Un-map IPv4 IPv6 addresses (remove '::ffff' prefix), disallow such addresses to be specified in CIDR configuration by @jpdillingham in #1606
- Add throttling for incoming search requests, add additional prometheus metrics covering search responses by @jpdillingham in #1608
- Include agentName when completing agent GetFileStreamAsync by @jpdillingham in #1610
- Bump lodash-es from 4.17.21 to 4.17.23 in /src/web by @dependabot[bot] in #1613
- Bump lodash from 4.17.21 to 4.17.23 in /src/web by @dependabot[bot] in #1614
- Add the ability to apply an options 'overlay' at run-time; enabling update of listen IP and port by @jpdillingham in #1623
- Bump webpack from 5.94.0 to 5.105.0 in /src/web by @dependabot[bot] in #1630
- Bump axios from 0.30.2 to 1.13.5 in /src/web by @dependabot[bot] in #1635
- Add VPN integration and gluetun client by @jpdillingham in #1632
- Add gluetun config example by @jpdillingham in #1637
- Apply unix file mode to directories too by @jpdillingham in #1638
- Adjust some VPN service logic to make it more resilient by @jpdillingham in #1639
- Add explicit request validation for POST /searches by @jpdillingham in #1640
- Enqueue endpoint hardening by @jpdillingham in #1641
- Fix download error when no file mode is configured by @jpdillingham in #1642
Full Changelog: 0.24.3...0.24.4
0.24.3
What's Changed
- Fix UrlEncodingModelBinder regression with PathBase by @andykelk in #1600
- Fix Regression in 0.24.2: API endpoints return 404 when running with base path by @jpdillingham in #1601
New Contributors
Full Changelog: 0.24.2...0.24.3
0.24.2
What's Changed
- Change "Get Full Directory Contents" button caption and icon for clarity by @Copilot in #1552
- Make chat rooms search filter case-insensitive by @Copilot in #1556
- Update Browse empty state message for clarity by @Copilot in #1576
- Add validation to prevent crash when blacklist is enabled without file by @Copilot in #1579
- Add statistics by @jpdillingham in #1547
- Add reverse proxy instructions to README by @WinnerWind in #1503
- Add transfer details popup with datetime information to upload/download rows by @Copilot in #1582
- feature: configurable ip address by @x0vi in #1555
- Add the ability to bind HTTP and HTTPS to specific IP addresses by @jpdillingham in #1585
- Remove single character cli args for envars and cert/secret gen by @jpdillingham in #1586
- Add the ability to configure an API key via environment variables and command line by @jpdillingham in #1587
- Add client-side sorting to System Files view by @Copilot in #1581
- Handle Mutex creation failures in restricted environments by @Copilot in #1580
- Add Prometheus metrics for enqueue operations by @jpdillingham in #1588
- Add several indexes to share database, avoid using HasFlag() in other queries by @jpdillingham in #1589
- Optimize handling of file requests by @jpdillingham in #1591
- Add Failed retention setting, add more states to errored cleanup by @jpdillingham in #1594
- Bump qs and express in /src/web by @dependabot[bot] in #1590
- Fix issues with some API endpoints when values containing, among other characters, forward slashes are present by @jpdillingham in #1596
- Fix typo in docs (http-listen-ip-address -> http-ip-address) by @jpdillingham in #1597
New Contributors
- @Copilot made their first contribution in #1552
- @WinnerWind made their first contribution in #1503
- @x0vi made their first contribution in #1555
Full Changelog: 0.24.1...0.24.2
0.24.1
Notable change: #1544 Remove cache sharing directive from SQLite connection strings removes an ill-advised SQLite setting that has been causing contention and deadlocks for some (most?) users. This release should be noticeably more performant and stable.
What's Changed
- fix: system menu scrolls when overflowing on narrow screens by @tommytz in #1517
- Add flags to disable SQLite cache sharing and pooling by @jpdillingham in #1524
- Ensure SQLite PRAGMAs journal_mode=wal and synchronous=1 (NORMAL) are set during initialization by @jpdillingham in #1529
- Remove file validation for unix sockets by @jpdillingham in #1530
- Add flag to enable logging of unobserved exceptions by @jpdillingham in #1538
- Fix build warnings by @jpdillingham in #1539
- Bump js-yaml from 3.14.1 to 3.14.2 in /src/web by @dependabot[bot] in #1531
- Bump axios from 0.30.0 to 0.30.2 in /src/web by @dependabot[bot] in #1460
- Bump node-forge from 1.3.1 to 1.3.2 in /src/web by @dependabot[bot] in #1542
- Remove cache sharing directive from SQLite connection strings, remove deprecated toggle flag for it by @jpdillingham in #1544
- Simplify transfer-failing logic by @jpdillingham in #1546
New Contributors
Full Changelog: 0.24.0...0.24.1
0.24.0
🔧 Transfer Overhaul
This release incorporates a ton of bug fixes and refactoring in both slskd and the underlying Soulseek.NET library with the goal of resolving 'stuck' and failing transfers (both uploads and downloads).
What's Changed
- fix(docs): add missing prefixes to some environment variables by @RalphORama in #1420
- Add telemetry module to make Prometheus metrics available in the UI by @jpdillingham in #1410
- Fix debug log that displays information about migrations at startup by @jpdillingham in #1421
- Refactor initialization of database connection strings by @jpdillingham in #1422
- Eliminate 'magic strings' when referencing databases and connection strings by @jpdillingham in #1423
- Bump Soulseek.NET to 8.0.0 by @jpdillingham in #1438
- Fix bug causing 'Value cannot be null. (Parameter 'instance')' while editing a commented-out config by @jpdillingham in #1441
- Bump form-data in /src/web by @dependabot[bot] in #1439
- Bump ws in /src/web by @dependabot[bot] in #1440
- Tweak how file access is handled when validating config by @jpdillingham in #1449
- Refactor upload logic, splitting file enqueue and upload and adding defensive checks throughout by @jpdillingham in #1456
- Refactor transfer progress update logic by @jpdillingham in #1457
- Support the ability for the web interface to listen on a unix socket by @encode42 in #1453
- Refine support for unix domain sockets (UDS) by @jpdillingham in #1458
- Refactor download logic to split enqueue and download by @jpdillingham in #1462
- Improve logging of DownloadDenied and DownloadFailed events by @jpdillingham in #1463
- Bump Soulseek.NET to 8.1.2 by @jpdillingham in #1464
- Enqueue files one at a time by @jpdillingham in #1465
- Wait for transfer response from remote client before enqueuing the next file by @jpdillingham in #1467
- Implement a number of improvements and bug fixes with download logic by @jpdillingham in #1472
- Add dedicated transfer connection timeout, set server, distributed and transfer connection timeouts explicitly. Bump Soulseek.NET to 8.4.0 by @jpdillingham in #1474
- Skip transfer progress updates if a previous update is still in progress by @jpdillingham in #1479
- Limit concurrent enqueue requests to 20 by @jpdillingham in #1480
- Set concurrent search limit to 2 (from the default 10) by @jpdillingham in #1481
- Set Unix file mode after moving downloaded files by @jpdillingham in #1482
- Add rate limiting to search and download requests by @jpdillingham in #1483
- Add more logging to download logic by @jpdillingham in #1484
- Fix bug with Prometheus threadpool statistics by @jpdillingham in #1485
- Prime message connection before enqueueing downloads locally by @jpdillingham in #1486
- Temporarily disable unobserved exception logging by @jpdillingham in #1487
- Refactor download logic to improve stability and improve performance by @jpdillingham in #1491
- Bump Soulseek.NET to 8.5.0 by @jpdillingham in #1497
- Add missing filename filter when superseding download records by @jpdillingham in #1500
- Make check of index names in transfer indexes migration case insensitive by @jpdillingham in #1501
- Increase concurrent download requests to 2, return enqueue results by @jpdillingham in #1504
New Contributors
- @RalphORama made their first contribution in #1420
- @encode42 made their first contribution in #1453
Full Changelog: 0.23.2...0.24.0
0.23.2
What's Changed
- Add a few indexes on the Transfers database to improve performance by @jpdillingham in #1390
- Adjust auto-reconnect logic by @jpdillingham in #1385
- Refactor handling of searches, attempt to trap un-Completed condition and correct it by @jpdillingham in #1395
- Don't log warnings when failing to find a file in a share by @jpdillingham in #1398
- Add chat events for webhooks and scripts by @Lemmmy in #1376
- Add chat events for webhooks and scripts by @jpdillingham in #1399
- Bump Soulseek.NET to 7.1.1 by @jpdillingham in #1407
- Bump on-headers and compression in /src/web by @dependabot[bot] in #1408
- Add metric to count search requests per second by @jpdillingham in #1409
- Fix bug preventing proper change detection when updating options with an enum type by @jpdillingham in #1411
- Substantially improve performance of search request filtering by @jpdillingham in #1413
- Ensure lists stored as class property values are read only and properly materialized by @jpdillingham in #1418
- Bump Soulseek.NET to 7.1.2 by @jpdillingham in #1419
New Contributors
Full Changelog: 0.23.1...0.23.2
0.23.1
What's Changed
- Fix regression in scripts and webhooks causing json to be missing detail by @jpdillingham in #1389
Full Changelog: 0.23.0...0.23.1