Transmission Versions Save

Official Transmission BitTorrent client repository

4.0.6

2 weeks ago

Transmission 4.0.6

This is a bugfix-only release. Everyone's feedback on 4.0.x has been very helpful -- thanks for all the suggestions, bug reports, and pull requests!

What's New in 4.0.6

All Platforms

  • Improved parsing HTTP tracker announce response. (#6223)
  • Fixed 4.0.0 bug that caused some user scripts to have an invalid TR_TORRENT_TRACKERS environment variable. (#6434)
  • Fixed 4.0.0 bug where alt-speed-enabled had no effect in settings.json. (#6483)
  • Fixed 4.0.0 bug where the GTK client's "Use authentication" option was not saved between's sessions. (#6514)
  • Fixed 4.0.0 bug where the filename for single-file torrents aren't sanitized. (#6846)

macOS Client

  • Fix: Sparkle support for handling beta version updates. (#5263)
  • Fixed app unable to start when having many torrents and TimeMachine enabled. (#6523)
  • Fix: Sparkle Version Comparator. (#6623)

Qt Client

  • Fixed 4.0.0 bug where piece size description text and slider state in torrent creation dialog are not always up-to-date. (#6516)

GTK Client

  • Fixed build when compiling with GTKMM 4. (#6393)
  • Added developer name to metainfo files. (#6598)
  • Added the launchable desktop-id to metainfo files. (#6779)
  • Fixed build when compiling on BSD. (#6812)

Web Client

  • Fixed a 4.0.0 bug where the infinite ratio symbol was displayed incorrectly in the WebUI. (#6491, #6500)
  • Fixed layout issue in speed display. (#6570)
  • General UI improvement related to filterbar and fixes download/upload speed info wrap. (#6761)

Daemon

  • Fixed a couple of logging issues. (#6463)

Everything Else

  • Updated flatpak release metainfo. (#6357)
  • Fixed libtransmission build on very old cmake versions. (#6418)
  • UTP peer connections follow user-defined speed limits better now. (#6551)
  • Only use a single concurrent queue for timeMachineExclude instead of one queue per torrent (#6523). (#6558)
  • Fixed 4.0.5 bug where svg and png icons in the WebUI might not be displayed. (#6563)
  • Fixed 4.0.0 bug where alt-speed-enabled had no effect in settings.json. (#6564)
  • Fixed 4.0.0 bugs where some RPC methods don't put torrents in recently-active anymore. (#6565)
  • Improved parsing HTTP tracker announce response. (#6567)
  • Fixed compatibility with clang-format 18. (#6690)
  • Fixed build when compiling with mbedtls 3.x . (#6823)

Thank You!

Last but certainly not least, a big Thank You to these people who contributed to this release:

Contributions to All Platforms:

  • @tearfur (Yat Ho):
    • Improved parsing HTTP tracker announce response. (#6223)
    • Fix: add check for EWOULDBLOCK. (#6350)
    • Fixed 4.0.0 bug where alt-speed-enabled had no effect in settings.json. (#6483)
    • Fixed 4.0.0 bug where the GTK client's "Use authentication" option was not saved between's sessions. (#6514)
    • Fixed 4.0.0 bug where the filename for single-file torrents aren't sanitized. (#6846)

Contributions to macOS Client:

Contributions to GTK Client:

  • @brad0 (Brad Smith):
    • Fixed build when compiling on BSD. (#6812)
  • @wjt (Will Thompson):
    • Added developer name to metainfo files. (#6598)
    • Added launchable tag to metainfo files. (#6720)
    • Added the launchable desktop-id to metainfo files. (#6779)

Contributions to Web Client:

  • @Rukario:
    • General UI improvement related to filterbar and fixes download/upload speed info wrap. (#6761)
  • @tearfur (Yat Ho):
    • Code review. (#6570, #6761)
    • Fixed a 4.0.0 bug where the infinite ratio symbol was displayed incorrectly in the WebUI. (#6491, #6500)
  • @tessus (Helmut K. C. Tessarek):
    • Fixed layout issue in speed display. (#6570)

Contributions to Everything Else:

  • @nevack (Dzmitry Neviadomski):
  • @orangepizza:
    • Fixed build when compiling with mbedtls 3.x . (#6823)
  • @tearfur (Yat Ho):
    • UTP peer connections follow user-defined speed limits better now. (#6551)
    • Fixed 4.0.5 bug where svg and png icons in the WebUI might not be displayed. (#6563)
    • Fixed 4.0.0 bug where alt-speed-enabled had no effect in settings.json. (#6564)
    • Fixed 4.0.0 bugs where some RPC methods don't put torrents in recently-active anymore. (#6565)
    • Fix: add check for EWOULDBLOCK (#6350). (#6566)
    • Improved parsing HTTP tracker announce response. (#6567)
  • @wjt (Will Thompson):
    • Updated flatpak release metainfo. (#6357)

4.0.5

6 months ago

Transmission 4.0.5

This is a bugfix-only release. Everyone's feedback on 4.0.x has been very helpful -- thanks for all the suggestions, bug reports, and pull requests!

What's New in 4.0.5

Highlights

  • Fixed 4.0.0 bug where the IP address field in UDP announces were not encoded in network byte order. [BEP-15]. (#6132)
  • Fixed a bug that incorrectly escaped JSON strings in some locales. (#6005, #6133)
  • Fixed 4.0.4 decreased download speeds for people who set a low upload bandwidth limit. (#6134)

All Platforms

  • Fixed bug that prevented editing trackers on magnet links. (#5957)
  • Fixed HTTP tracker announces and scrapes sometimes failing after adding a torrent file by HTTPS URL. (#5969)
  • In RPC responses, change the default sort order of torrents to match Transmission 3.00. (#5604)
  • Fixed tr_sys_path_copy() behavior on some Synology Devices. (#5974)

macOS Client

  • Support Sonoma when building from sources. (#6016, #6051)
  • Fixed early truncation of long group names in groups list. (#6104)

Qt Client

  • Fix: only append .added suffix to watchdir files. (#5705)

GTK Client

  • Fixed crash when opening torrent file from "Recently used" section in GTK 4. (#6131, #6142)

Thank You!

Last but certainly not least, a big Thank You to these people who contributed to this release:

Contributions to All Platforms:

  • @chantzish:
    • Fixed bug that prevented editing trackers on magnet links. (#5957)
  • @hgy59:
    • Fixed tr_sys_path_copy in file-posix.cc for some Synology Devices (#5966). (#5974)
  • @tearfur (Yat Ho):
    • Code review. (#5974)
    • Fixed HTTP tracker announces and scrapes sometimes failing after adding a torrent file by HTTPS URL. (#5969)
    • Fixed a bug where Transmission is incorrectly escaping JSON strings in some locales. (#6005, #6133)
    • Fixed 4.0.4 decreased download speeds for people who set a low upload bandwidth limit. (#6082, #6134)
    • Fixed 4.0.0 bug where the IP address field in UDP announces are not encoded in network byte order. [BEP-15]. (#6126, #6132)
    • Fix: formatting cmdline help message. (#6174)

Contributions to macOS Client:

Contributions to GTK Client:

4.0.4

9 months ago

Transmission 4.0.4

This is a bugfix-only release. Everyone's feedback on 4.0.x has been very helpful -- thanks for all the suggestions, bug reports, and pull requests!

What's New in 4.0.4

All Platforms

  • Fixed bug in sending torrent metadata to peers. (#5460)
  • Avoid unnecessary heap memory allocations. (#5520, #5527)
  • Fixed filename collision edge case when renaming files. (#5563)
  • Fixed locale errors that broke number rounding when displaying statistics, e.g. upload / download ratios. (#5587)
  • Always use a fixed-length key query in tracker announces. This isn't required by the spec, but some trackers rely on that fixed length because it's common practice by other BitTorrent clients. (#5652)
  • Fixed potential Windows crash when getstdhandle() returns NULL. (#5675)
  • Fixed 4.0.0 bug where the port numbers in LDP announces are sometimes malformed. (#5825)
  • Fixed a bug that prevented editing the query part of a tracker URL. (#5871)
  • Fixed a bug where Transmission may not announce LPD on its listening interface. (#5896)
  • Made small performance improvements in libtransmission. (#5715)

macOS Client

  • Updated code that had been using deprecated API. (#5633)

Qt Client

  • Fixed torrent name rendering when showing magnet links in compact view. (#5491)
  • Fixed bug that broke the "Move torrent file to trash" setting. (#5505)
  • Fixed Qt 6.4 deprecation warning. (#5552)
  • Fixed poor resolution of Qt application icon. (#5570)

GTK Client

  • Fixed missing 'Remove torrent' tooltip. (#5777)

Web Client

  • Don't show null as a tier name in the inspector's tier list. (#5462)
  • Fixed truncated play / pause icons. (#5771)
  • Fixed overflow when rendering peer lists and made speed indicators honor prefers-color-scheme media queries. (#5814)
  • Made the main menu accessible even on smaller displays. (#5827)

transmission-cli

  • Fixed "no such file or directory" warning when adding a magnet link. (#5426)
  • Fixed bug that caused the wrong decimal separator to be used in some locales. (#5444)

transmission-remote

  • Fixed display bug that failed to show some torrent labels. (#5572)

Everything Else

  • Ran all PNG files through lossless compressors to make them smaller. (#5586)
  • Fixed potential build issue when compiling on macOS with gcc. (#5632)

Thank You!

Last but certainly not least, a big Thank You to these people who contributed to this release:

Contributions to All Platforms:

  • @basilefff (Василий Чай):
    • Fixed filename collision edge case when renaming files. (#5563)
  • @G-Ray (Geoffrey Bonneville):
  • @GaryElshaw (Gary Elshaw):
    • Typos in libtransmission source code comments. (#5473)
  • @KyleSanderson (Kyle Sanderson):
    • Fixed uninitialized session_id_t values. (#5396)
  • @qzydustin (Zhenyu Qi):
    • Fixed a bug that prevented editing the query part of a tracker URL. (#5871)
  • @tearfur (Yat Ho):
    • Code review. (#5871, #5896)
    • Always use a fixed-length key query in tracker announces. This isn't required by the spec, but some trackers rely on that fixed length because it's common practice by other BitTorrent clients. (#5652)
    • Refactor: share CompareCacheBlockByKey by constexpr static member. (#5678)
    • Perf: convert comparator functors to static constexpr. (#5687)
    • Perf: reduce copying in enforceSwarmPeerLimit(). (#5731)
    • Fix: clamp down harder for upload as well. (#5821)
    • Fixed 4.0.0 bug where the port numbers in LDP announces are sometimes malformed. (#5825)

Contributions to macOS Client:

Contributions to Qt Client:

Contributions to GTK Client:

Contributions to Web Client:

  • @dareiff (Derek Reiff):
    • Fixed overflow when rendering peer lists and made speed indicators honor prefers-color-scheme media queries. (#5814)
  • @GaryElshaw (Gary Elshaw):
    • Fixed truncated play / pause icons. (#5771)
  • @Rukario:
    • Made the main menu accessible even on smaller displays. (#5827)

Contributions to transmission-remote:

Contributions to Everything Else:

4.0.3

1 year ago

Transmission 4.0.3

This is a bugfix-only release. Everyone's feedback on 4.0.x has been very helpful -- thanks for all the suggestions, bug reports, and pull requests!

What's New in 4.0.3

All Platforms

  • Fixed 4.0.2 higher CPU load while downloading. Regression introduced by #5167. (#5266, #5273)
  • Fixed 4.0.0 bug where the torrentGet RPC method returned wrong trackerStats.tier values. (#5274)
  • Fixed 4.0.0 HTTP announce behavior with bind-address-ipv* settings. (#5296)
  • Fixed 4.0.0 bug in code that detects the computer's IPv6 support. (#5312)
  • Silenced 4.0.0 minor log warnings for cross_seed_entry and uid entries in torrent files. (#5365)
  • When adding a duplicate torrent via the RPC API, the return value now matches Transmission 3's return value. (#5370)
  • Fixed use of metainfo display-name as a fallback name. (#5378)
  • Updated torrent Peer ID generation to happen once per session, even for public torrents. (#5233)

macOS Client

  • Added support for non-UTF-8 magnets. (#5244)
  • Fixed potential memory leak in tr_strv_convert_utf8(). (#5264)
  • Fixed crash on launch from tapping on a notification. (#5280)

Qt Client

  • Fixed 4.0.2 FTBFS on Qt 5.13. (#5238)

GTK Client

  • Fixed 4.0.0 preferences dialog being too large for small displays. (#5276, #5360)
  • Fixed 4.0.0 regression of percents, speeds, sizes, etc. not being i18nized properly. (#5288)
  • Fixed FTBFS in GTKMM 4.10. (#5289, #5295)

Web Client

  • Fixed confusing Inspector UI when waiting for initial data from the server. (#5249)
  • Fixed a keyboard shortcut conflict. (#5318)
  • Turned off keyboard shortcuts when input fields have focus. (#5381)
  • Show announce URL's origins in the inspector's tracker list. (#5382)
  • Added missing date-added field in the Inspector's info tab. (#5386)

Daemon

  • Set the log level sooner at startup to ensure events aren't missed. (#5345)

transmission-remote

  • Fixed 4.0.0 bug in the display of how much of a torrent has been downloaded. (#5265)

Everything Else

  • Bumped fallback version of libdeflate from v1.17 to bugfix release v1.18. (#5388)
  • Documentation improvements. (#5278)

Thank You!

Last but certainly not least, a big Thank You to these people who contributed to this release:

Contributions to All Platforms:

  • @tearfur:
    • Fixed 4.0.0 HTTP announce behavior with bind-address-ipv* settings. (#5296)
    • Fixed 4.0.0 bug in code that detects the computer's IPv6 support. (#5312)

Contributions to macOS Client:

Contributions to GTK Client:

  • @albino (lawrence):
    • Fix: restore accidentally-deleted copyright notice (GTK). (#5372)
  • @GaryElshaw (Gary Elshaw):
    • Fixed 4.0.0 preferences dialog being too large for small displays. (#5360)

Contributions to Web Client:

Contributions to Daemon:

  • @tearfur:
    • Set the log level sooner at startup to ensure events aren't missed. (#5345)

Contributions to transmission-remote:

  • @hoimic:
    • Fixed 4.0.0 bug in the display of how much of a torrent has been downloaded. (#5265)

Contributions to Everything Else:

4.0.2

1 year ago

Transmission 4.0.2

This is another bugfix-only release. Thanks for all the suggestions, bug reports, and code -- the feedback on 4.0.x has been very helpful!

Transmission 4 needs translators! Check out this page if you'd like to help.

What's New in 4.0.2

Highlights

  • Fixed 4.0.1 bug where some torrents thought they were magnet links. (#5025)
  • Fixed 4.0.0 bug that broke watchdirs in the macOS client. (#5058, macOS Client)
  • Fixed 4.0.0 bug where download speed limits were ignored for uTP peers. (#5086)
  • Fixed 4.0.0 bug using announce-list when creating single-tracker private torrents. (#5106)

All Platforms

  • Restored support for path.utf-8 keys in torrent info dictionaries. (#3454)
  • Fixed value of TR_TIME_LOCALTIME environment variable in torrent scripts. (#5006)
  • Limited in-kernel file copying to 2 GiB blocks at a time to avoid potential issues with CIFS mounts. (#5039)
  • Simplified filename info in log messages. (#5055)
  • Fixed std::clamp() assertion failures. (#5080, #5203)
  • Fixed small error calculating protocol overhead when receiving peer messages. (#5091)
  • Fixed incorrect escaping of non-BMP characters when generating JSON. (#5096)
  • Fixed 4.0.0 crash when receiving malformed piece data from peers. (#5097)
  • Fixed 4.0.0 potential crash when downloading from webseeds. (#5161)
  • Improved handling of the leechers param in trackers' announce responses. (#5164)
  • Fixed 4.0.0 regression that stopped increasing the download priority of files' first and last pieces. These pieces are important for making incomplete files previewable / playable while still being downloaded. (#5167)
  • Fixed display of IPv6 tracker URLs. (#5174)
  • Fixed code that could stop being interested in peers that have pieces we want to download. (#5176)
  • Improved sanity checking of magnet links added via RPC. (#5202)
  • Fixed a misleading error message when Transmission is unable to write to the incomplete-dir. (#5217)
  • Worked around an older libdht bug that could provide invalid peer info. (#5218)
  • Restored RPC torrentGet.wanted return value to match 3.00 behavior. (#5170)

macOS Client

  • Fixed minor UI bugs, e.g. layout and control alignment. (#5016, #5018, #5019, #5021, #5035, #5066)
  • Added up / down arrows to upload / download badge info. (#5095)
  • Fixed 4.0.0 bug where macOS users could see some of their old torrents reappear after removing & restarting. (#5117)
  • Fixed "Unrecognized colorspace number -1" error messages from macOS. (#5219)
  • Fixed bug that caused local data to not be found when adding a new torrent in a custom folder. (#5060)
  • Fixed crash on startup in copyWithZone(). (#5079)

Qt Client

  • Ensured that "Open File" opens the torrent's folder for multi-file torrents. (#5115)
  • Fixed 4.0.0 bug that prevented batch-adding trackers to multiple torrents at once. (#5122)
  • Fixed per-torrent ratio display in main window. (#5193)

GTK Client

  • Fixed 4.0.0 ignoring -m/--minimized command line option. (#5175)
  • Fixed assertion failure in the progress display when creating a new torrent. (#5180)

Web Client

  • Fixed minor UI bugs, e.g. layout and control alignment. (#5001)
  • Fixed 4.0.0 bug that that failed to save alternate speed begin/end settings changes. (#5033)
  • Fixed broken keyboard shortcuts on desktop Safari. (#5054)
  • Improved colors in both light & dark mode. (#5083, #5114, #5151)

Daemon

  • Made the "unrecognized argument" error message more readable. (#5029)

transmission-remote

  • Fixed a spurious error message when adding magnet links. (#5088)

Everything Else

Thank You!

Last but certainly not least, a big Thank You to these people who contributed to this release:

Contributions to All Platforms:

  • @HAkos1:
    • Simplified filename info in log messages. (#5055)
  • @Lanzaa (Colin B.):
    • Restored support for path.utf-8 keys in torrent info dictionaries. (#3454)
  • @reardonia:
    • Improved handling of the leechers param in trackers' announce responses. (#5164)
    • Restored RPC torrentGet.wanted return value to match 3.00 behavior. (#5170)
  • @wiz78:
    • Fixed value of TR_TIME_LOCALTIME environment variable in torrent scripts. (#5006)
  • @xavery (Daniel Kamil Kozar):
    • Fixed incorrect escaping of non-BMP characters when generating JSON. (#5096)

Contributions to macOS Client:

Contributions to Web Client:

Contributions to Daemon:

Contributions to Everything Else:

4.0.1

1 year ago

Transmission 4.0.1

The 4.0.0 release two weeks ago generated a lot of useful feedback (thank you!!) so we've been busy fixing bugs. This release has only bug fixes, documentation improvements, and build script fixes to make packaging easier.

RIP, Yeeshkul. TJ, your tracker is one of the first things that got me (@ckerr) interested in torrents when I started contributing to the Transmission project back in 2007. So long and thanks for all the fish.

What's New in 4.0.1

Highlights

  • Added Qt 5 builds for older Windows system, since Qt 6 requires Windows 10 or newer. (#4855)
  • Fixed 4.0.0 bug that caused some torrents to have poor speed and some of their checksums to be incorrectly marked as failed. (#4879, #4880, #4890)
  • Fixed 4.0.0 bug that caused beachballing / jank. (#4936)
  • Fixed 4.0.0 bug that caused blocklists to use more memory than necessary. (#4953)
  • Fixed 4.0.0 issue that failed to migrate magnet links from Transmission 3. (#4840)

libtransmission (All Platforms)

  • Follow BEP 27's placement of private field when creating new torrents. (#4809)
  • Fixed 4.0.0 bug that failed to retry to connect to peers with TCP if UTP failed first. (#4897)
  • Fixed 4.0.0 bug that could prevent port forwarding settings from being saved. (#4842)
  • Fixed 4.0.0 crash that occurred when removing a webseed torrent while downloading. (#4847)
  • Fixed 4.0.0 regression that paused magnet links when adding them. (#4856)
  • Fixed 4.0.0 illegal instruction exception on some x86 Windows machines. (#4886)
  • Fixed 4.0.0 build failure due to incompatible system and bundled libutp headers. (#4877)
  • Fixed 4.0.0 build failure on NetBSD. (#4863)
  • Fixed 4.0.0 build error when building bundled libb64 and libutp. (#4762, #4810)
  • Fixed 4.0.0 build failure when compiling with Clang on Windows. (#4978)
  • Fixed 4.0.0 build issue that prevented distro versions of libdeflate from being used. (#4968)
  • Removed a harmless "unable to read resume file" error message to avoid confusion. (#4799)
  • Fixed 4.0.0 libtransmission compiler warnings. (#4805)

macOS Client

  • Added padding to widgets in macOS client to avoid being hidden below scroller. (#4788)
  • Fixed 4.0.0 layout issue in the pieces view. (#4884)
  • Fixed 4.0.0 bug that didn't highlight the current selection in View > Use Groups. (#4896)
  • Fixed dock icon badge colors to Apple accessibility guidelines. (#4813)

Qt Client

  • Fixed incorrect display of some trackers' announce URLs. (#4846)
  • Fixed "Open Folder" feature for local sessions. (#4963)
  • Fixed Qt 6 deprecation warnings. (#4710)

GTK Client

  • Fixed 4.0.0 crash on opening torrent details dialog. (#4859)
  • Fixed 4.0.0 bug that froze the app after showing or hiding via system tray (GTK 3 only). (#4939)
  • Fixed 4.0.0 rounding error in the progressbar's percentage display. (#4933)
  • Fixed 4.0.0 blurred progress bars in main window. (#4756)
  • Fixed awkward grammar in the Details Dialog's running-time row. (#4898)

Web Client

  • Fixed 4.0.0 bug that failed to apply settings changes immediately. (#4839)
  • Fixed label searches that have spaces or hyphens. (#4932)
  • Fixed highlight color of selected context menu rows in dark mode. (#4984)

Everything Else

  • Changed default build to skip clang-tidy linting due to upstream bug. (#4824)
  • Build: Use CXX symbol checking to verify system libutp. (#4909)
  • Build: add option to disable installation of web assets. (#4906)
  • Build: set /utf-8 flag when using MSVC. (#4975)

Thank You!

Last but certainly not least, a big Thank You to these people who contributed to this release:

Contributions to libtransmission (All Platforms):

  • @0-wiz-0 (Thomas Klausner):
    • Fixed 4.0.0 build failure on NetBSD. (#4863)
  • @Berbe:
    • Fixed 4.0.0 compiler warnings when building libtransmission. (#4805)
  • @GaryElshaw (Gary Elshaw):
  • @goldsteinn:
    • Fixed 4.0.0 illegal instruction exception on some x86 Windows machines. (#4886)
  • @reardonia:
  • @sweetppro:
  • @xavery (Daniel Kamil Kozar):
    • Follow BEP 27's placement of private field when creating new torrents. (#4809)

Contributions to macOS Client:

  • @GaryElshaw (Gary Elshaw):
    • Fixed dock icon badge colors to Apple accessibility guidelines. (#4813)
  • @nevack (Dzmitry Neviadomski):
  • @sweetppro:
    • Added padding to widgets in macOS client to avoid being hidden below scroller. (#4788)
    • Fixed 4.0.0 layout issue in the pieces view. (#4884)
    • Fixed 4.0.0 bug that didn't highlight the current selection in View > Use Groups. (#4896)

Contributions to Qt Client:

Contributions to Web Client:

  • @elboletaire (Òscar Casajuana):
    • Fixed label searches that have spaces or hyphens. (#4932)
  • @GaryElshaw (Gary Elshaw):
    • Fix: make context menu highlighted row readable in dark mode. (#4984)

Contributions to Everything Else:

  • @abubaca4:
    • Build: reduce minimum libdeflate version to 1.7. (#4970)
  • @Berbe:
    • Updated documentation. (#4803)
    • Fix: Prevent lengthy compilation workflows to run needlessly. (#4804)
    • Improved documentation on settings.json options. (#4812)
  • @bheesham (Bheesham Persaud):
    • Build: Use CXX symbol checking to verify system libutp. (#4909)
  • @fetzu (Julien):
    • Chore: normalized and updated copyright to 2023. (#4834)
  • @fghzxm:
    • Build: do not test utils if not building utils. (#4946)
    • Build: set /utf-8 flag when using MSVC. (#4975)
  • @floppym (Mike Gilbert):
    • Build: pass --no-warn-unused-cli to child CMake process. (#4807)
  • @t-8ch (Thomas Weißschuh):
    • Test: expose libtransmission gtests to ctest. (#4731)
    • Build: install rebuilt web if available. (#4865)
    • Build: add option to disable installation of web assets. (#4906)

4.0.0

1 year ago

Transmission 4.0.0

Highlights

This is a major release, both in numbering and in effort! It's been in active development for over a year and has a huge list of changes -- over a thousand commits -- since Transmission 3.00. Some of the highlights include:

Resource Efficiency

  • The code has been extensively profiled and improved to fix inefficient code and memory use. For example, a stress test of starting transmission-daemon with 25,000 torrents is almost entirely IO-bound, using 50% fewer CPU cycles and 70% fewer memory allocations than Transmission 3.00.

  • The remote control GUIs (transmission-qt and transmission-web) now use the RPC API "table" mode, resulting in smaller payloads / less bandwidth use.

  • RPC payloads are now compressed using libdeflate, a "heavily optimized [library that is] significantly faster than the zlib library."

Community

  • The project is much more responsive to bug reports and code submissions than it has been in the past.
  • There is a new group of volunteer contributors who are working on Transmission!
  • Transmission 4.0.0 includes over 350 new community commits (see the Thank You section below and in the previous 4.0.0 betas) since 3.00 and welcomes new contributors.
  • Documentation has been moved into the transmission/transmission so that contributors can submit PRs to improve it.

Code Modernization

  • The entire codebase has been migrated from C to C++. In the process, we've removed thousands of lines of custom code and used standard C++ tools instead. The core's code has shrunk by 18%. The core codebase has been extensively refactored to be more testable and maintainable.
  • The GTK client has been ported to gtkmm.
  • The Web client has been rewritten in modern JavaScript and no longer uses jQuery. The entire gzipped bundle is now 68K.
  • The unit tests have been expanded and ported to Google Test. Clang sanitizer builds are run during CI.
  • The core library is now fuzz tested.
  • Transmission now uses Sonarcloud, Coverity, LGTM, and clang-tidy static analysis on new code. Several hundred code warnings have been fixed compared to Transmission 3.00.

New Features

  • Support for using BitTorrent v2 torrents and hybrid torrents. (Support for creating v2 and hybrid torrents is slated for an upcoming release.)
  • Users can now set "default" trackers that can be used to announce all public torrents.
  • Newly-added seeds can start immediately and verify pieces on demand, instead of needing a full verify before seeding can begin. (#2626)
  • Added an option to omit potentially-identifying information (e.g. User-Agent and date created) when creating new torrents. (#3452)
  • The Web client has been rewritten and now supports mobile use.
  • When creating new torrents, users can now specify the piece size. (#3768, #3145, #2805)
  • IPv6 blocklists are now supported. (#3835)
  • Beginning with 4.0.0-beta.1, Transmission releases now use semver versioning.
  • Dozens of other new features -- too many to list here! We've been working on this for a year!

What's New Since 4.0.0-beta.3

libtransmission (All Platforms)

  • Added a new setting, torrent-added-verify-mode, to force-verify added torrents. (#4611)
  • Improved handling of webseed servers that do not support Range requests or 206 Partial Content. (#4601)
  • Improved handling of webseed servers that return a content-encoding that was not requested. (#4609)
  • Fixed 4.0.0-beta.3 potential socket leak. (#4616)
  • Fixed 4.0.0-beta.3 regression that failed to detect largefile build flags on 32bit systems. (#4627)
  • Fixed 4.0.0-beta.1 UI bug when removing a tracker from the announce list. (#4635)
  • Improved error handling when receiving corrupt piece data from peers. (#4665)
  • Fixed 4.0.0-beta.1 FTBFS error on CentOS 7. (#4673, #4675)
  • Made small performance improvements in libtransmission. (#4577, #4679)
  • Dropped libiconv dependency in libtransmission. (#4565)
  • Updated 403 RPC error message. (#4567)
  • Bumped libdeflate snapshot to 1.17. (#4596)

macOS Client

  • Fixed two Help menus in macOS. (#4500)
  • Fixed bug that caused magnet links to always be paused when added. (#4528)
  • Fixed 4.0.0-beta.1 regression that broke the Piece View "blinking" when a piece completes. (#4587)
  • Ensured that the preferences window is centered the first time it is shown. (#4659)
  • Fixed 4.0.0-beta.1 regression that incorrectly handled corrupt blocklists. (#4705)
  • Increased the font size in the main window's torrent list. (#4557)
  • Fixed libpsl dependency build issue on macOS. (#4642)

Qt Client

  • Made display order of speed limits consistent between Properties, Details dialogs. (#4677)

GTK Client

  • Fixed 4.0.0-beta.1 regression making it impossible to close "Set location" dialog (GTK 3 only). (#4625)
  • Fixed 4.0.0-beta.2 regression leading to crash during progress bars rendering on some systems. (#4688)

Web Client

  • Fixed 4.0.0-beta.1 potential crash when detecting mime-types. (#4569)
  • Fixed 4.0.0-beta.1 regression that broke file priority buttons in the web client. (#4610)

Daemon

  • Fixed stderr logging issue when running as a systemd unit. (#4612)

transmission-remote

  • Fixed 4.0.0-beta.1 regression when displaying session info. (#4624)
  • Fixed 4.0.0-beta.1 regression when displaying tracker info. (#4633)

Thank You!

Last but certainly not least, a big Thank You to these people who contributed after 4.0.0-beta.3:

Contributions to libtransmission (All Platforms):

Contributions to macOS Client:

Contributions to Qt Client:

Contributions to Web Client:

Contributions to Daemon:

Contributions to transmission-remote:

Contributions to Everything Else:

New Contributors since 3.00

4.0.0-beta.3

1 year ago

Transmission 4.0.0-beta.3

What's New in 4.0.0-beta.3

libtransmission (All Platforms)

  • Dropped obsolete CyaSSL and PolarSSL crypto backends (WolfSSL and MbedTLS are still supported). (#4495)
  • Updated extension protocol handshake to include yourip value as suggested by BEP 10. (#4504)
  • Fixed out-of-order teardown bug that could cause a crash on shutdown. (#4331, #4348, #4451)
  • Fixed 4.0.0-beta.1 bug that broke detection of a peer's UDP port in a peer handshake. (#4334)
  • Fixed 4.0.0-beta.2 regression that broke port forwarding in some settings. (#4343)
  • Fixed 4.0.0-beta.2 bitfield crash. (#4346)
  • Fixed 4.0.0-beta.1 pattern matching in whitelist and host_whitelist. (#4353)
  • Fixed 4.0.0-beta.2 crash when pausing a torrent. (#4358)
  • Fixed 4.0.0-beta.2 IPv6 μTP socket binding regression. (#4469)
  • Followed BEP 7 suggestion to remove &ipv4= and &ipv6= query parameters from tracker announcements. (#4502)
  • Followed BEP 7 suggestion to make the tracker announce &key= query parameter unique per-torrent. (#4508)
  • Updated the bookkeeping to ensure both TCP and uTP connections honor the connection limit. (#4534)
  • Made small performance improvements in libtransmission. (#4393, #4401, #4404, #4412, #4424, #4425, #4431, #4519)
  • Improved test coverage in the code that checks for reserved IP address use. (#4462)

macOS Client

  • Sorting by size now only uses the sizes of files that are wanted. (#4365)
  • Fixed memory leak in the blocklist downloader. (#4309)
  • Fixed UI issues in the main window when using Groups. (#4333)
  • Improved layout of macOS UI elements. (#4366, #4367, #4460)
  • Fixed the background style of torrents selected in the main window. (#4458)
  • Updated code that had been using deprecated API. (#4308, #4441)
  • Removed unused or unnecessary code. (#4374, #4440)
  • Fixed 4.0.0-beta.1 regression that showed an incorrect icon or name in the drag overlay. (#4428)
  • Fixed the file display of torrents that consist of just a single file in a single folder. (#4454)

Qt Client

  • Fixed progress bars positioning on Mac. (#4489)
  • Added Qt dependencies for Windows build instructions and minor fixes. (#4363)
  • Updated Qt CMakeLists.txt to include support for building svg. (#4437)

GTK Client

  • Fixed 4.0.0-beta.1 regression leading to potential crash on startup upon watch directory setup. (#4355)
  • Fixed 4.0.0-beta.1 regression that prevented closing the "update blocklist" dialog. (#4391, #4392)
  • Fixed a bug that hid the "Enable µTP for peer communication" checkbox. (#4349)
  • Removed unused or unnecessary code. (#4416)

transmission-remote

  • Fixed 4.0.0-beta.1 bug that showed the wrong ETA for some torrents. (#4506)

transmission-show

  • Fixed 4.0.0-beta.2 regression that caused transmission-show --scrape to not exit cleanly. (#4447)

Everything Else

  • Added Windows build manual. (#4291)
  • Removed Visual C++ redistributable libraries installation from the MSI package. (#4339)
  • Removed obsolete 'lightweight' build option. (#4509)

Thank You!

Last but certainly not least, a big Thank You to these people who contributed to this release:

Contributions to libtransmission (All Platforms):

Contributions to macOS Client:

Contributions to Qt Client:

Contributions to transmission-remote:

Contributions to Everything Else:

4.0.0-beta.2

1 year ago

Transmission 4.0.0-beta.2

What's New in Transmission 4

  • Support for using BitTorrent v2 torrents and hybrid torrents. (Support for creating v2 and hybrid torrents is slated for an upcoming release.)
  • Users can now set "default" trackers that can be used to announce all public torrents.
  • Newly-added seeds can start immediately and verify pieces on demand, instead of needing a full verify before seeding can begin. (#2626)
  • Added an option to omit potentially-identifying information (e.g. User-Agent and date created) when creating new torrents. (#3452)
  • The Web client has been rewritten and now supports mobile use.
  • Added support for GTK 4. (#3916, GTK Client)
  • When creating new torrents, users can now specify the piece size. (#3768, #3145, #2805)
  • IPv6 blocklists are now supported. (#3835)

What's New in 4.0.0-beta.2

Highlights

  • Added support for GTK 4. (#3916, GTK Client)
  • Prefer ayatana-indicator over appindicator, if present. (#4001, GTK Client)
  • Lots of bugfixes!

libtransmission (All Platforms)

  • Fixed 4.0.0-beta.1 regression that could misformat the port forwarding log messages. (#3911)
  • Fixed 4.0.0-beta.1 regression that could crash when mixing IPv4 and IPv6 addresses in an IP blocklist. (#4011)
  • Fixed 4.0.0-beta.1 regression that could fail to serve web client files from Windows. (#4099)
  • Fixed 4.0.0-beta.1 bug that returned an incorrect key in group-get RPC responses. (#4171)
  • Fixed data overflow in Message Log. (#4237)
  • Fixed 4.0.0-beta.1 regression that broke the TR_TORRENT_LABELS environment variable when running user scripts. (#4260)
  • Fixed slow shutdown caused by waiting on unresponsive trackers to reply. (#4285)
  • Minor efficiency improvements in libtransmission. (#4116, #4216, #4220, #4224, #4226)
  • Improved DHT bootstrapping on startup. (#4122)
  • Made host lookups more efficient for users that disable CA verification. (#4159)
  • Lowered CPU overhead in tr_peerIo::write() when writing to encrypted streams. (#4258)
  • Improved detection of preinstalled system copies of libutp. (#4072)
  • Use a newer version of fast_float as a fallback when no preinstalled version can be found on the system. (#4098)
  • Updated libtransmission's copy of the mime-types list. (#4246)

macOS Client

  • Added the ability to sort by activity using the filter bar. (#3944)
  • Fixed sort order when sorting by activity was reversed. (#3924)
  • Fixed a potential hang when updating blocklists. (#4010)
  • Fixed formatting of ETA dates for slow torrents. (#4085)
  • Corrected the display in user locale of some quantities above 1000. (#4109)
  • Fixed 4.0.0-beta.1 Inspector filter crash. (#4138)
  • Fixed 4.0.0-beta.1 regression that could crash when displaying some torrents that contain invalid UTF-8. (#4144)
  • Fixed 4.0.0-beta.1 UI glitch when users attempted to set piece size too high or too low. (#4145)
  • Fixed missing 4.0.0-beta.1 translations. (#4161)
  • Fixed a long-standing bug that could freeze the UI on startup while Time Machine was active. (#4208)
  • Fixed deleting previously selected torrent when attempting to clear search field using ⌘⌫. (#4245)
  • The 'Transmission' name has been removed from the Toolbar in Big Sur and later OS versions. (#3919)
  • Improved sizing and alignment of the Message Log window. (#3962)
  • Changed Badge display so that upload is up and download is down. (#4055)
  • Auto enlarge search field. (#4067)
  • Support UserNotifications framework. (#3040)
  • Fixed various Xcode and CMake build issues. (#3940, #3946, #3951, #4156, #4185, #4195, #4231, #4234)
  • Fixed macOS API deprecation warnings. (#3950, #4112, #4190, #4221)
  • Fixed various macOS API warnings. (#4202)

GTK Client

  • Added support for GTK 4. (#3916)
  • Prefer ayatana-indicator over appindicator, if present. (#4001)
  • Changed progress bar color depending on torrent state. (#3976)
  • Fixed 4.0.0-beta.1 regression that could cause a crash after completing a download. (#3963)
  • Fixed an issue where already open Details dialog didn't update files list once magnet metainfo is retrieved. (#4004)
  • Fixed 4.0.0-beta.1 regression that broke bulk-adding torrents from watchdirs. (#4079)
  • Fixed broken ETA formatting in the 4.0.0-beta.1 Torrent Details dialog. (#4227)
  • Fixed 4.0.0-beta.1 regression that made the About dialog difficult to close. (#3892)
  • Fixed 4.0.0-beta.1 regression that made duplicate add/edit tracker error dialogs being shown twice. (#3898)
  • Increased default Message Log window size to avoid toolbar controls being hidden on overflow. (#3971)
  • Turned on more clang-tidy checks and fixed warnings. (#4127, #4137, #4158, #4160, #4167, #4174, #4183)
  • Improved favicons lookup for unreachable tracker servers. (#4278)

Web Client

  • Fix: chrome needs vendor prefix(-webkit-) for mask. (#4056)
  • Improved layout of 'Add Torrents' dialog. (#4063)
  • Improved inspector dialog styling on Chrome. (#4095)
  • Refresh web interface across desktop and mobile. (#3985)
  • Docs: refresh web-interface page. (#4277)
  • Fixed webpack conflict error when building source map. (#4058)
  • Fix: inspector icon should be disabled as default. (#4093)

transmission-remote

  • Improved and documented the rename command. (#3973)
  • Fixed a 4.0.0-beta.1 regression that misformatted the display of a torrent's start time. (#3909)

transmission-create

  • Fixed a 4.0.0-beta.1 regression that misformatted the display of the number of files in a torrent. (#3996)

Everything Else

  • Improved libtransmission unit tests. (#3812, #4121, #4170, #4173)
  • Turned on more clang-tidy checks and fixed warnings. (#4131)
  • Updated documentation. (#3904, #3927, #3982, #4101)
  • Bumped deps versions used for Windows release builds. (#4092)
  • Added CodeQL workflow. (#4125)
  • Use a newer version of libb64 as a fallback when no preinstalled version can be found on the system. (#4129)

Thank You!

Last but certainly not least, a big Thank You to these people who contributed to this release:

Contributions to libtransmission (All Platforms):

  • @depler:
    • Fixed 4.0.0-beta.1 regression that could misformat the port forwarding log messages. (#3911)
  • @sweetppro (SweetPPro):
    • Fixed 4.0.0-beta.1 regression that could crash when mixing IPv4 and IPv6 addresses in an IP blocklist. (#4011)

Contributions to macOS Client:

Contributions to GTK Client:

Contributions to Web Client:

  • @dareiff (Derek Reiff):
    • Refresh web interface across desktop and mobile. (#3985)
    • Removed images and align cmakelist with reality. (#4013)
  • @Petrprogs (Peter):
    • Docs: refresh web-interface page. (#4277)
  • @trainto (Hakjoon Sim):
    • Fix: chrome needs vendor prefix(-webkit-) for mask. (#4056)
    • Fixed webpack conflict error when building source map. (#4058)
    • Improved layout of 'Add Torrents' dialog. (#4063)
    • Fix: inspector icon should be disabled as default. (#4093)
    • Improved inspector dialog styling on Chrome. (#4095)

Contributions to transmission-remote:

  • @lajp (Luukas Pörtfors):
    • Fixed a 4.0.0-beta.1 regression that misformatted the display of a torrent's start time. (#3909)
    • Improved and documented the rename command. (#3973)

Contributions to transmission-create:

Contributions to Everything Else:

4.0.0-beta.1

1 year ago

Welcome to the first beta release of Transmission 4.0.0! It's been in active development for over a year and has a huge list of changes -- over 1,000 commits -- since Transmission 3.00. Some of the highlights include:

Resource Efficiency

  • The code has been extensively profiled and improved to fix inefficient code and memory use. For example, a stress test of starting transmission-daemon with 25,000 torrents is almost entirely IO-bound, using 50% fewer CPU cycles and 70% fewer memory allocations than Transmission 3.00.

  • The remote control GUIs (transmission-qt and transmission-web) now use the RPC API "table" mode, resulting in smaller payloads / less bandwidth use.

  • RPC payloads are now compressed using libdeflate, a "heavily optimized [library that is] significantly faster than the zlib library."

Community

  • The project is much more responsive to bug reports and code submissions than it has been in the past.
  • There is a new group of volunteer contributors who are working on Transmission!
  • Transmission 4.0.0-beta.1 includes over 300 new community commits (see the Thank You section below for a list) and is welcoming new contributors.
  • Documentation has been moved into the transmission/transmission so that contributors can submit PRs to improve it

Code Modernization

  • The entire codebase has been migrated from C to C++. In the process, we've removed thousands of lines of custom code and used standard C++ tools instead. The core's code has shrunk by 18%. The core codebase has extensively refactored to be more testable and maintainable.
  • The GTK client has been ported to gtkmm.
  • The Web client has been rewritten in modern JavaScript and no longer uses jQuery. The entire gzipped bundle is now 68K.
  • The unit tests have been expanded and ported to Google Test. Clang sanitizer builds are run during CI.
  • The core library is now fuzz tested.
  • Transmission now uses Sonarcloud, Coverity, LGTM, and clang-tidy static analysis on new code. Several hundred code warnings have been fixed compared to Transmission 3.00.

New Features

  • Support for using BitTorrent v2 torrents and hybrid torrents. (Support for creating v2 and hybrid torrents is slated for an upcoming release.)
  • Users can now set "default" trackers that can be used to announce all public torrents.
  • Newly-added seeds can start immediately and verify pieces on demand, instead of needing a full verify before seeding can begin. (#2626)
  • Added an option to omit potentially-identifying information (e.g. User-Agent and date created) when creating new torrents. (#3452)
  • The Web client has been rewritten and now supports mobile use.
  • When creating new torrents, users can now specify the piece size. (#3768, #3145, #2805)
  • IPv6 blocklists are now supported. (#3835)
  • Beginning with 4.0.0-beta.1, Transmission releases now use semver versioning.
  • Dozens of other new features -- too many to list here! We've been working on this for a year!

Other Changes

[All Platforms] [macOS Client] [Qt Client] [GTK Client] [Daemon] [Web Client] [Utils] [Everything Else!]

All Platforms

  • Fix small scrape/announce packet size that could trip SYN flood detection on some systems (#3236)
  • Remove the 1024 open files limit previously required by how libcurl was used (#893)
  • Add configurable anti-brute force settings (#1447)
  • Fetch metadata of stopped magnets (#1080)
  • Stop logging excessive error messages after they repeat too many times. In some cases, repetitive messages had been spamming syslogs. (#2756)

macOS Client

  • Transmission is now a Universal (Apple Silicon and Intel) app.
  • Refresh of the UI to better fit into modern macOS.
  • A new icon designed for Big Sur by Rodger Werner.

Qt Client

  • Support both Qt5 and Qt6 (#2069)
  • Nicer error handling when duplicate torrents are added (#1410)
  • More efficient use of RPC (#1234, #1322, #1333)
  • More efficient state updates (#1334, #1335, #1336, #1428, #1430, #1432, #1433, #1234)
  • Slightly more efficient RPC requests (#1373)
  • Better caching of tracker favicons (#1402)
  • Fix memory leaks (#1378)
  • Fix FreeSpaceLabel crash (#1604)
  • Add remote server version info in the About dialog (#1603)
  • Support TR_RPC_VERBOSE environment variable for debugging RPC calls (#1435)
  • Allow filtering by info hash (#1763)

GTK Client

  • Ported to GTKMM
  • When creating new torrents, their piece size can be specified.
  • The File menu now incorporates normal quick key operations.
  • The Details dialog now includes the date a torrent was added.
  • The Details dialog now renders large file lists faster. (#2992, #2993)
  • Better i18n of phrases for past, present, and future tense (#3214)

Daemon

TODO

Web Client

The web client has been given a major overhaul. (#1476)

User-visible highlights include:

  • Mobile is now fully supported.
  • Added fullscreen support on mobile.
  • Better support for dark mode.
  • Added mime icons to the torrent list.
  • Improved theme consistency across the app.

Maintainer highlights include:

  • Updated code to use ES6 APIs.
  • No longer use jQuery UI.
  • No longer use jQuery.
  • Use Webpack to bundle the Javascript, CSS, and assets together -- the entire bundle size is now 68K gzipped.
  • Added eslint / prettier / stylelint tooling.
  • Uses torrent-get's 'table' mode for more efficient RPC calls.

Utils

  • Allow webseed URLs when creating torrents in transmission-create
  • Display more progress information during torrent creation in transmission-create (#1405)

Everything Else!

Thank You

Last but certainly not least, a big Thank You to the people who contributed to this release: acchang, Ali, Andrey, Balázs Meskó, beizmos, Berbe, bexnoss, bkuhls, buckmelanoma, Carles Pastor Badosa, Charles Kerr, Chris Young, Chrool, Cœur, Colin B, Craig Andrews, C.W. Betts, Dachtire, Daniel Kamil Kozar, Dan Walters, David Beinder, David Miguel Susano Pinto, dependabot[bot], depler, Dinesh Manajipet, Dmitry Antipov, Dmitry Serov, Dmytro Lytovchenko, dubhater, Dzmitry Neviadomski, Esa Varemo, evils, ewtoombs, FallenWarrior2k, Federico Bond, FluxState, Frank Aurich, FX Coudert, Gary Elshaw, goldsteinn, Greg Hazel, Guido Cella, Guido Vranken, Hakjoon Sim, Han Shen, Harm133, Ilkka Kallioniemi, IMurzich, Isabella Skořepová, Jelle van der Waa, Johan, Jonas Malaco, JP-Ellis, kakuhen, Kirill Ovchinnikov, Kobaxidze256, Koro, L2501, LaserEyess, Lucas Clemente Vella, lucaxvi, Luukas Pörtfors, luzpaz, Mark Deepwell, Markus Amalthea Magnuson, Matan Ziv-Av, Matt Joiner, maxz, Max Zettlmeißl, Michael Lopez, Michal Kubiak, mickaelifs, Mike Gelfand, Mike Gilbert, Mitchell Livingston, Nathan Benichou, Nicholas Guriev, Noobsai, Norbert Papke, Oleg Chashko, orbital-mango, OscarCunningham, Pavel Borzenkov, Pedro Scarapicchia Junior, Peter Bailey, Petrprogs, Pierre Carru, qu1ck, razaq, RobCrowston, Robert Palmer, Robin Seth Ekman, Rosen Penev, Sam Marcus, Sander van Kasteel, Sergey Fedoseev, sewe2000, shelvacu, Simone Tellini, Stefan Talpalaru, SweetPPro, Tomáš Kelemen, Tyler, Viacheslav Chimishuk, Vik, Vincent Vinel, Vitaly Potyarkin, vuori, wiz78, and Xist12gh!

These release notes were compiled manually. Since 4.0.0 has been in development for so long, this has been a time-consuming and error-prone process. If you contributed to Transmission and aren't listed here or below, we apologise in advance!

Notable Code Contributions

Core contributions (libtransmission):

  • 1100101 (Frank Aurich):
    • Fix overflow bugs on 32bit platforms with torrents larger than 4GB (#2391, #2378)
    • Fix RPC 'table' mode not being properly activated (#2058)
    • Fix RPC response payload when removing torrents (#2040)
  • anacrolix (Matt Joiner):
    • Reject cancels when fast extension enabled (#2275)
  • AndreyPavlenko (Andrey Pavlenko):
    • use new environment variable TR_CURL_PROXY_SSL_NO_VERIFY (#2622)
  • lajp (Luukas Pörtfors):
    • Add renaming support in transmission-remote (#2905)
  • AndreyPavlenko (Andrey Pavlenko):
    • Use android logger on Android (#585)
  • bkkuhls:
    • Fix cross-compile build error (#2576)
  • carandraug (David Miguel Susano Pinto):
    • Added transmission-create option to omit potentially-identifying information, such as User-Agent and date created, when creating torrents. (#3452)
  • cfpp2p:
    • add an option to run a script when a torrent is added (#1896)
  • Chrool
    • Make anti-brute force RPC server configurable (#1447)
  • clickyotomy (Srinidhi Kaushik):
    • magnet link improvements incl. regression tests for invalid magnets (#2483)
  • dbeinder (David Beinder):
    • Fix unreleased regression that broke RPC bitfield values (#2768)
    • Return correct bitfield when fully downloaded (#2799)
  • Dan Walters:
    • Apply optional peer socket TOS to UDP sockets (#1043)
  • deepwell (Mark Deepwell):
  • dgcampea:
    • support DSCP classes in socket iptos (#2594)
  • Dmitry Antipov:
    • C++ify UDP core object (#3794)
    • Fix warning issued during LTO builds (#3766)
  • goldsteinn:
    • Performance improvements to bitfield.cc (#2933, #2950)
  • guidovranken
    • Fix out-of-bounds read in torrent parsing (#3600)
  • Harm33:
    • Blocklists now support IPv6 (#3835)
  • Ivella (Lucas Clemente Vella):
    • Implement latest version of BEP-7 for HTTP requests (#1661)
  • ile6695 (Ilkka Kallioniemi):
    • Fix filename reserved prefix detection. (#3541)
    • Add more decimals for low wratios (#2508)
    • Add regression tests for tr_strlcpy (#2679)
  • johman10 (Johan):
    • Add total disk space to free-space RPC request (#1682)
  • JP-Ellis (JP Ellis):
    • Fix detection of PSL library (#2812)
  • kakuhen:
    • Clarify documentation on torrent-add result on duplicate torrents (#2690)
  • kvakvs (Dmytro Lytovchenko):
  • L2501:
    • Add recognition for more Peer IDs of other clients (#3750, #3838)
  • lanzaa (Colin B):
    • Add basic support for BitTorrent v2 hashes (#3380, #3388a
    • Support single-file hybrid torrents (#3446)
  • LaserEyess:
    • Add labels to torrent-add RPC method (#2539)
    • Support binding RPC to a Unix socket (#2574)
    • Add bind-address-ipv4 to UPnP (#845)
  • MatanZ (Matan Ziv-Av):
  • mhadam (Michael Hadam):
    • Add support for torrent-get calls with the key percentComplete (#2615)
  • miickaelifs:
    • NAT-PMP private/public port and lifetime fix (#1602)
  • narthorn:
    • Don't follow symlinks when removing junk files (#1638)
  • neheb (Rosen Penev):
    • fix runtime with wolfSSL and fastmath (#1950)
  • noobsai:
    • Fix building for XFS (#2192)
  • npapke (Norbert Papke) and cfpp2p:
    • Fix "IPv4 DHT announce failed" error message (#1619)
  • pyrovski (Peter Bailey):
    • Allow stopping torrents in verification states (#715)
  • qu1ck:
    • Add label support to the core (#822, #868)
    • Fix unreleased fields handling regression in RPC (#2972)
    • Fix peer port change in session rpc (#3573)
  • razaq:
    • add TR_TORRENT_TRACKERS env variable to script call (#2053)
  • RobCrowston (Rob Crowston):
    • Add in-kernel file copying for several platforms. (#1092)
    • Allow the OS to set the size of the listen queue connection backlog. (#922)
    • Refactor tr_torrentFindFile2() (#921)
    • Don't set thet path attribute when setting a cookie. (#1893)
  • sandervankasteel (Sander van Kasteel):
    • Added primitive CORS header support (#1885)
  • sio (Vitaly Potyarkin):
    • Lift 1024 open files limit (switch to curl polling API) (#893)
  • stefantalpalaru (Ștefan Talpalaru):
    • Add support for default public trackers (#2668)
  • TimoPtr:
    • Add support for running a script when done seeding (#2621)
  • uprt (Kirill):
    • Replace NULL back with nullptr (mistake after auto-rebase) (#1933)
    • Slashes fixes (#857)
  • Xist12gh:
    • Add fallback for EXDEV error on Linux kernel 5.18 (#3756)
  • vchimishuk (Viacheslav Chimishuk):
    • Add announce-ip and announce-ip-enabled parameters. (#3461)
    • Fix broken tr_sessionSetPeerPortRandom() function. (#3569)
    • Fix IPv6 socket binding interface. (#3692)
  • vjunk:
    • Add support for adding torrents by raw hash values (#2608)
  • vuori:
    • Fixed wrong ipv6 addr used in announces. (#265)

macOS Client code contributions:

  • alimony ((Markus Amalthea Magnuson):
    • Added ability to filter on error status. (#19)
  • azy5030 (Ali):
    • Add ability to change piece size during torrent creation (#2416)
  • Coeur (A Cœur):
  • DevilDimon (Dmitry Serov):
    • Optimize framework imports (#3323)
    • Use standard macOS toolbar buttons (#3356)
    • macOS client code modernization (#2453, #509)
  • federicobond (Federico Bond):
    • Replace deprecated NSRunAlertPanel call in Controller.m (#1441)
  • floppym (Mike Gilbert):
    • Restore support for the INSTALL_LIB option (#1756)
  • fxcoudert (FX Coudert):
    • Update deprecated macOS code (#3330)
    • Update links in macOS credits (#3329)
    • Improve crash report debug information (#2471)
    • Change accent color to match macOS red choice
    • Mac client uses freed memory (#2234)
    • macOS: remove quitting badge (#2495)
    • fix build warnings (#3174)
  • GaryElshaw (Gary Elshaw):
  • MaddTheSane (Charles W. Betts):
    • Move private interfaces to interface extensions (#932)
    • macOS: use SDK's libCurl. (#1542)
  • maxz (Max Zettlmeißl):
  • nevack (Dzmitry Neviadomski):
    • Revamp Toolbar Segments (#3512)
    • Use NSAlert APIs to show alert suppression checkbox (#3360)
    • Apply ObjC modernization (#3358)
    • Hide NSPopover arrow for Torrent options (#3294)
    • Fix group auto-assigning based on NSPredicate (#3289)
    • Xcode wrangling (#2141, #3266, #3267)
    • Update info window (#2269)
    • Update blocklist downloader (#2101, #2191)
    • Fix macOS client deprecation warnings (#2038, #2074, #2090, #2113)
    • Fix CMake + Ninja builds on macOS (#2036)
    • Update Preferences window sizing for Russian locale (#3291)
    • Fix global popover clipping (#3264)
    • Use DDG favicons service and migrate to NSURLSession #3270)
  • Oleg-Chashko (Oleg Chashko):
  • rsekman (Robin Seth Ekman):
    • fix daemon invocation regression: deprecated --log-error -> --log-level=error (#3201)
  • SweetPPro SweetPPro:
    • Unify the margin between headers and content on the Activity tab and the Options tab in the Info Window (#3522)
    • macOS layout improvements (#3326, #3472, #3497, #3559, #3604)
    • macOS disable green maximize button on Inspector window (#3563)
    • OS fix clipping and crashing on the Info Inspector Options tab (#3473)
    • macOS internationalization of xibs (#3409)
    • Use the default toolbar button size on macOS 11+ (#3433)
    • Remove gradient from PiecesView (#3342)
    • macOS fix quicklook in the Torrent Inspector files view (#3321)
    • macOS fullscreen and autosize fixes (#3315)
    • macOS client icon improvements (#3221, #3113
    • Update macOS group indicators (#3183)
    • Fullscreen mode fixes (#195)
    • Fix for editing magnet links' tracker lists (#2793)
    • Fix some window drawing issuex #3278)
    • Replace Groups indicators with dots. #3268)
    • Fix a number of UI render issues in the torrent creator window #3205)
    • Magnet link improvements (#3205, #2702)
  • wiz78 (Simone Tellini):
    • Disable App Nap. (#874)
  • xavery (Daniel Kamil Kozar):
    • Add support for creating torrents with a source flag (#443)

GTK Client code contributions:

  • bexnoss:
    • Fix conflicting hotkeys (#2201, #3720)
    • Remember 4 recent relocate folders (#3691)
  • cpba (Carles Pastor Badosa):
    • Add content_rating to appdata (#1487)
  • jonasmalacofilho (Jonas Malaco):
    • Accept dropping URLs from browsers onto the main window (#2232)
  • meskoabalazs (Balázs Meskó):
    • Fix xgettext markup issues (#3210)
  • noobsai:
    • Fixed showing popup menu on RMB at tray icon (#1210)
    • Use correct variable for uploading speed (#3560)
  • okias (David Heidelberg):
    • Use metainfo folder instead of appdata (#2624)
  • orbital-mango:
    • Allow piece size selection during torrent creation (#3771)
    • Add missing accelerators in File menu (#3213)
    • Add piece size selection when creating torrents (#3145)
    • Show torrent-added date/time in Torrent Details dialog (#3124)
  • sir-sigurd (Sergey Fedoseev):
    • Add Sort by Queue menu item to popup menu (#1040)
  • stefantalpalaru (Ștefan Talpalaru):
    • Add support for default public trackers (#2668)
  • TimoPtr (Timothy Nibeaudeau):
    • Add support for running a script when done seeding (#2621)
  • xavery (Daniel Kamil Kozar):
    • Add a "Start Now" action for newly added torrent notifications (#849)
    • Add support for creating torrents with a source flag (#443)
    • Remove unnecessary "id" member of TrNotification in gtk/notify.c (#851)
  • lucaxvi
    • Use symbolic icons in status bar (#3655)

Qt Client code contributions:

  • buckmelanoma:
    • Set stock icon for speed, options and statistics buttons in Qt (#2179)
  • dubhater:
    • Move icon after "Alternative Speed Limits" label (#503)
    • Use file selector in Set Location if session is local (#502)
    • Qt: Add tooltips for Options, Statistics buttons (#501)
  • GaryElshaw (Gary Elshaw):
  • IMurzich:
    • Fix a progressBar direction for QT 5.15 for paused torrents (#3739)
  • OscarCunningham:
    • Fix "sort by progress" for seeding torrents (#3814)
  • saidinesh5 (Dinesh Manajipet):
    • Feature: Support Batch Adding Tracker Urls in Qt UI (#1161)
  • sewe2000 (Seweryn Pajor):
    • Show torrent-added date/time in Torrent Details dialog (#3121)
  • stefantalpalaru (Ștefan Talpalaru):
    • Add support for default public trackers (#2668)
  • TimoPtr:
    • Add support for running a script when done seeding (#2621)
  • xavery (Daniel Kamil Kozar):
    • Add a "Start Now" action for newly added torrent notifications (#849)
    • Add support for creating torrents with a source flag (#443)
  • varesa (Esa Varemo):
    • Add the option of auto-adding URLs from the clipboard on window focus (#1633)

Web Client code contributions:

  • 1100101 (Frank Aurich):
    • Fix display of size values in web interface (#2703)
  • CodeWitchBella (Isabella Skořepová):
    • Add magnet link support to transmission web (#2874)
  • deepwell (Mark Deepwell):
    • Fix webpack start dev server (#2579)
  • jfredrickson (Jeff Fredrickson):
    • Allow decimal values in seedRatioLimit input (#2618)
  • moben (Benedikt McMullin):
    • Fix sorting of renamed torrents by name (#1892)
  • stefantalpalaru (Ștefan Talpalaru):
    • Add support for default public trackers (#2668)
  • trainto (Hakjoon Sim):
    • CSS fixes (#2609)
    • Fix overflow menu should be closed when click it once again (#1485)
  • ToKe79 (Tomáš Kelemen):
    • Add support for incomplete-dir (#2183)
    • Add option to alter the download queue (#2071)
  • vchimishuk (Viacheslav Chimishuk):
    • Fix broken state and labels filter (#3311)
    • Add label support (#2596, #1406, #3311)
    • Fix broken Cancel and Rename buttons on RenameDialog. (#2577)
  • xavery (Daniel Kamil Kozar):
    • Add support for creating torrents with a source flag (#443)

transmission-daemon code contributions:

  • candrews (Craig Andrews):
    • Deny memory wx in transmission-daemon.service (#2573)
  • catadropa:
    • Small fixes to i18n markup formatting (#2901)
  • ewtoombs:
    • Wrote a guide on headless usage. (#3049)
  • Dmitry Antipov:
    • C++ify transmission-daemon code (#3767, #3815)
    • Use signalfd-based signal handling if available (#3778)
    • Do not fsync() log messages when they are written to a tty (#3785)
  • FallenWarrior2k:
    • Delay start of daemon systemd service until network is configured (#2721)
  • jelly (Jelle van der Waa):
    • Add ProtectSystem and PrivateTmp to systemd service (#1452)
  • piec (Pierre Carru):
    • add magnet file support to watchdir (#1328)
  • rsekman (Robin Seth Ekman):
    • fix daemon invocation regression: deprecated --log-error -> --log-level=error (#3201)
  • timtas (Tim Tassonis):
    • add pid-file to transmission-daemon manpage (#2784)

utils code contributions:

  • 1100101 (Frank Aurich):
    • Fix size display for torrents larger than 4GB (#2029)
  • BunioFH (Michal Kubiak):
    • Allow multiple calls to --tracker-add/or --tracker-remove in transmission-remote (#2284)
  • Kobaxidze256:
    • Add a new flag in transmission-remote for connecting through a Unix domain socket (#3552)
  • lajp (Luukas Pörtfors):
    • Add renaming support in transmission-remote (#2905)
  • LaserEyess:
    • Add option to dump RPC responses as JSON (#3819)
  • MatanZ (Matan Ziv-Av):
    • Filtering torrents in transmission-remote (#3125)
    • Allow control of transmission-show output (#2825)
  • orbital-mango:
    • transmission-edit can now edit the torrent 'source' tag (#3760)
  • TimoPtr:
    • Add seeding-done script to transmission-remote (#2621)
  • vchimishuk (Viacheslav Chimishuk):
    • Fix Labels section in transmission-remote output. (#2597)
  • xavery (Daniel Kamil Kozar):
    • Add support for creating torrents with a source flag (#443)

Documentation