Skip to content

BREAKING: Move all transfer options under a 'transfers' key#1672

Merged
jpdillingham merged 6 commits intomasterfrom
options
Mar 15, 2026
Merged

BREAKING: Move all transfer options under a 'transfers' key#1672
jpdillingham merged 6 commits intomasterfrom
options

Conversation

@jpdillingham
Copy link
Member

@jpdillingham jpdillingham commented Mar 15, 2026

To support upcoming extensions to transfer options, I'm making the choice to move everything under a top-level transfers key in the configuration YAML, along with other changes. These changes will allow me to continue extending things in a thoughtful way, and should be more intuitive for new users.

Specific changes:

  • Renames global to transfers. The old global.upload becomes transfers.upload, and so on.
  • Moves groups (which used to be top-level) underneath transfers
  • Moves all limits configuration underneath the associated upload key
  • Renames the integration key to integrations (unrelated to transfers, just trying to group disruptive changes)

Old:

global:
  upload:
  limits:
    queued:
    daily:
    weekly:
  download:
groups:
  default:
    upload:
    limits:
  leechers:
    thresholds:
    upload:
    limits:
  user_defined:
    my_buddies:
      upload:
      limits:
      members:

New:

transfers:
  upload:
    limits:
      queued:
      daily:
      weekly:
  download:
  groups:
    default:
      upload:
        limits:
    leechers:
      thresholds:
      upload:
        limits:
    user_defined:
      my_buddies:
        upload:
          limits:
        members:

Cherry picked from #1664

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Refactors the configuration schema for transfer-related settings by moving them under a new top-level transfers key (renaming the former global/top-level groups layout) and updating the application/test code accordingly.

Changes:

  • Replaces Options.Global + Options.Groups with Options.Transfers and nests groups under it.
  • Moves limits under the associated upload config (global and per-group) and updates enqueue/queue/governor logic to read the new paths.
  • Updates unit tests and slskd.example.yml to reflect the new configuration structure.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
tests/slskd.Tests.Unit/Users/UserServiceTests.cs Updates tests to build transfer group config under Options.Transfers.Groups.
tests/slskd.Tests.Unit/Transfers/Uploads/UploadQueueTests.cs Updates queue tests for new Transfers.Upload + Transfers.Groups.*.Upload structure.
tests/slskd.Tests.Unit/Transfers/Uploads/UploadGovernorTests.cs Updates governor tests to read groups from Options.Transfers.Groups.
src/slskd/Users/UserService.cs Switches leecher thresholds/blacklist/group handling to OptionsMonitor.CurrentValue.Transfers.Groups.
src/slskd/Transfers/Uploads/UploadQueue.cs Reads group upload settings and global slots from options.Transfers.*.
src/slskd/Transfers/Uploads/UploadGovernor.cs Reads speed limits and group definitions from options.Transfers.*.
src/slskd/Program.cs Passes startup upload/download concurrency limits from OptionsAtStartup.Transfers.*.
src/slskd/Core/Options.cs Introduces TransfersOptions and restructures nested types/limits under upload and groups.
src/slskd/Application.cs Updates runtime speed limits + limit resolution logic to use Options.Transfers.*.
config/slskd.example.yml Updates example YAML to the new transfers: schema and new nesting for limits/groups.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@jpdillingham jpdillingham added breaking change This is a breaking change area: configuration Issues related to application configuration labels Mar 15, 2026
@jpdillingham jpdillingham changed the title Move all transfer options under a 'transfers' key BREAKING: Move all transfer options under a 'transfers' key Mar 15, 2026
@jpdillingham jpdillingham merged commit 92c5d4c into master Mar 15, 2026
6 checks passed
@jpdillingham jpdillingham deleted the options branch March 15, 2026 23:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: configuration Issues related to application configuration breaking change This is a breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants