Skip to content

feat(container): update image ghcr.io/slskd/slskd ( 0.24.5 → 0.26.0 )#1733

Open
chaplain-grimaldus[bot] wants to merge 1 commit into
mainfrom
renovate/ghcr.io-slskd-slskd-0.x
Open

feat(container): update image ghcr.io/slskd/slskd ( 0.24.5 → 0.26.0 )#1733
chaplain-grimaldus[bot] wants to merge 1 commit into
mainfrom
renovate/ghcr.io-slskd-slskd-0.x

Conversation

@chaplain-grimaldus

@chaplain-grimaldus chaplain-grimaldus Bot commented Apr 19, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Update Change
ghcr.io/slskd/slskd (source) minor 0.24.50.26.0

Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.


Release Notes

slskd/slskd (ghcr.io/slskd/slskd)

v0.26.0

Compare Source

🎉 Another Big Release!

This release contains improvements to the user interface, failed download retries, and gives users the ability to control where completed downloads go on disk.

There's also one breaking change in the configuration for file permissions.

Dashboard Screen and Footer

The default landing page is now a dashboard that displays various statistics:

image

Users can select the time range and can click the legend under the chart to show or hide common data series. The Users tab shows users with the highest transfer count, size or speed, depending on how sorting is applied, and the Content tab shows the most commonly downloaded directories. The Errors tab displays detailed error information.

Also shown in the screenshot above is a new footer that appears on every screen and that displays real-time upload and download speeds, number of active transfers, and the size of each queue.

Browse Screen Improvements

The Browse screen has been redesigned to improve the functionality and performance:

image

The directory tree now uses virtualization to improve the performance, enabling larger shares to be displayed and interacted with than before. Directories can now be expanded and collapsed by clicking the folder icon to the left of directory names, and the number of files and subdirectories contained in each directory are now shown. The directory tree can now also be resized vertically by clicking and dragging the three-dot button at the bottom.

The filter above the directory tree can be used to show matching directories (regardless of how deeply nested). The buttons to the right can be used to expand or contract all directories, and the rightmost button expands the tree to reveal the currently selected directory and scrolls it into view.

The file selector now shows subdirectories in addition to files, and subdirectories can be expanded one level to show the files within. Subdirectories can be selected to include all of the files (regardless of subdirectory depth) in the file selection, effectively allowing recursive downloading of directories. Clicking the arrow icon to the far right of the directory name navigates the directory tree to that directory, allowing further review of the contents.

As the screenshot shows, this has been tested and is working well with 1,000,000 files and 100,000 directories. I'm not sure what the practical limit is, but the issues described in issue #​317 are still mostly accurate; there are still users which can't be browsed, but limitations exist for all Soulseek clients at various levels.

Failed Download Retries

Failed downloads can be retried automatically up to the configured number of attempts. If an attempt fails initially, the application delays the second attempt by the configured delay, and an exponential backoff is used to compute the delay for all subsequent events, up to the configured maximum delay.

By default, partial downloads are resumed based on the size of the incomplete file. Users can choose to always overwrite files if they wish.

YAML

transfers:
  download:
    retry:
      incomplete: resume # 'overwrite' or 'resume'
      attempts: 3
      delay: 5000 # initial time between retries, in milliseconds
      max_delay: 60000 # maximum time between retries, in milliseconds
Completed Download Location

Users can now specify an expression that slskd will evaluate to determine the destination directory:

transfers:
  download:
    destination:
      subdirectory: ${SOURCE_DIRECTORY} # options: SOURCE_USERNAME, SOURCE_PATH, SOURCE_DIRECTORY, BATCH_ID, BATCH_EXTERNAL_ID, SEARCH_ID, SEARCH_TEXT
      exists: rename # 'overwrite' or 'rename'

The new subdirectory option allows users to specify an expression containing special, fixed values that are replaced at run-time when slskd determines where to place a newly downloaded file.

The syntax is simply:

<any string, or nothing>${<token>}<any other string, or nothing>

For example:

music/${SOURCE_USERNAME}/directories/${SOURCE_PATH}

Will expand to the following for a download of @@&#8203;abcde/foo/bar/baz/qux.ext from user Bob:

music/Bob/directories/@&#8203;@&#8203;abcde/foo/bar/baz

The value for token is some value related to the transfer, including:

  • SOURCE_USERNAME: The username of the user the file was downloaded from
  • SOURCE_PATH: The complete path to the directory on the source user's system
  • SOURCE_DIRECTORY: The directory on the source user's system that contains the file; the immediate parent directory
  • BATCH_ID: The ID pf the associated batch, if the file is part of a batch
  • BATCH_EXTERNAL_ID: The external ID included in the associated batches options when created
  • SEARCH_ID: The ID of the search associated with the batch, if one was supplied when the batch was created
  • SEARCH_TEXT: The text/query of the search

This option defaults to ${SOURCE_DIRECTORY}, which matches the current behavior. Users that choose not to set this option shouldn't notice any change.

The new exists option allows users to choose what slskd does when it downloads a file that already exists on disk, either overwrite which overwrites the old file with the new one, or rename, which appends a number to the end of the new file. The current behavior is rename.

Breaking Change

Users who have previously set the permissions.file.mode configuration property, were using the --file-permission-mode command line argument, or had set the SLSKD_FILE_PERMISSION_MODE environment variable will find that this option has been moved, and slskd should refuse to start informing them of this.

To fix this, update the YAML configuration file to set the new transfers.download.destination.permissions.mode key as shown below.

Old:

permissions:
  file:
    mode: 644 # not for Windows, chmod syntax, e.g. 644, 777. can't escalate beyond umask

New:

transfers:
  download:
    destination:
      permissions:
        mode: 644 # chmod syntax, e.g. 644, 777.  has no effect on Windows
What's Changed
New Contributors

Full Changelog: slskd/slskd@0.25.1...0.26.0

v0.25.1

Compare Source

What's Changed

Full Changelog: slskd/slskd@0.25.0...0.25.1

v0.25.0

Compare Source

🎉 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:

  1. Rename the global key to transfers
  2. Move all limits keys so that they appear nested under the upload key of the associated group
  3. Rename the integration key to integrations

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
New Contributors

Full Changelog: slskd/slskd@0.24.5...0.25.0


Configuration

📅 Schedule: (in timezone America/New_York)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate.

@chaplain-grimaldus
chaplain-grimaldus Bot force-pushed the renovate/ghcr.io-slskd-slskd-0.x branch from 2633254 to 696d5f7 Compare April 20, 2026 03:00
@chaplain-grimaldus chaplain-grimaldus Bot changed the title feat(container): update image ghcr.io/slskd/slskd ( 0.24.5 → 0.25.0 ) feat(container): update image ghcr.io/slskd/slskd ( 0.24.5 → 0.25.1 ) Apr 20, 2026
@chaplain-grimaldus
chaplain-grimaldus Bot force-pushed the renovate/ghcr.io-slskd-slskd-0.x branch from 696d5f7 to 055f69e Compare July 19, 2026 17:49
@chaplain-grimaldus chaplain-grimaldus Bot changed the title feat(container): update image ghcr.io/slskd/slskd ( 0.24.5 → 0.25.1 ) feat(container): update image ghcr.io/slskd/slskd ( 0.24.5 → 0.26.0 ) Jul 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants