Commit Graph

16703 Commits

Author SHA1 Message Date
Yat Ho
182c8ce12c fix: fail if pieces length in info dict is not multiple of 20 (#8409)
* fix: fail if `pieces` length in info dict is not multiple of 20

* fix(tests): replace potentially malicious test torrent for pieces length
2026-02-09 19:10:53 -06:00
Charles Kerr
2493c4b904 fix: use video/mp4 as the mime type for mp4 files (#8377)
* refactor: move primary_mime_type() to tr_torrent_files where it is easier to test

* fix: use video/mp4 mime type for .mp4 files

* docs: remove obsolete code comment
2026-02-09 15:53:06 -06:00
Charles Kerr
a8072d82f0 fix use different icon filenames per-client (#8281)
this prevents multiple packages from conflicting over a shared icon filename
2026-02-05 22:57:38 -06:00
Yat Ho
5320fc1a49 ci: workaround system header warnings on macOS (#8384) 2026-02-05 22:31:33 -06:00
Yat Ho
a628033637 fix(web): exception from destructing undefined property (#8374) 2026-02-05 20:43:09 -06:00
Charles Kerr
80a379f713 fix: mark strings for translation (#8351)
* fix: encryption mode not saved between sessions in GTK client

* fix: some strings were not correctly marked for translation
2026-02-05 16:12:44 -06:00
github-actions[bot]
6794c9d298 chore: update generated transmission-web files (#8376)
Co-authored-by: ckerr <70381+ckerr@users.noreply.github.com>
2026-02-05 13:09:05 -06:00
Rukario
cc66625fd2 feat: new window "Appearance settings" for web app (#7318)
* feat: new window "Appearance settings" for web app

* feat: new window "Appearance settings" for web app
2026-02-05 08:49:17 -06:00
Yat Ho
2e65935bbc build: wrap fmt::fmt-header-only with transmission::fmt-header-only (#8370) 2026-02-05 07:50:11 -06:00
Yat Ho
39803eb0f0 build: support building with system sigslot (#8371) 2026-02-04 22:46:16 -06:00
Daniel Golle
18e9fc954f build: fix external project builds with LTO-enabled toolchains (#8369)
* build: propagate LTO-aware archiver tools (CMAKE_AR, CMAKE_NM, CMAKE_RANLIB) to external projects
2026-02-04 22:45:06 -06:00
Berbe
d8a46d9e98 Fix: #8202 (refactor: use fewer raw C strings) (#8365) 2026-02-04 16:39:01 -06:00
Yat Ho
59939ad4e3 build: improve building with system libevent (#8223)
* build: improve building with system libevent

* chore: remove legacy `tr_add_external_auto_library` macro
2026-02-04 13:36:04 -06:00
Cœur
1b04d45f26 fix: ignore clang extension usage in ObjC (#8164)
* fix: ignore clang extension usage in ObjC

* Code review: adopt `kMaxCells` (324) directly.
2026-02-04 11:53:39 -06:00
Dmitry Lobanov
85b88c5f51 Adding xcode toolchain lookup. (#8342) 2026-02-04 08:11:08 -06:00
Charles Kerr
142b0af415 fix: assertion failed no timezone in fmt::chrono (#8344)
* fix: in tr_logGetTimeStr() do not use tz info on platforms that do not have it

* fix: simplify the supports-timezone check

Co-authored-by: Yat Ho <lagoho7@gmail.com>

---------

Co-authored-by: Yat Ho <lagoho7@gmail.com>
2026-02-04 07:45:44 -06:00
github-actions[bot]
60f8d43d14 chore: update generated transmission-web files (#8353)
Co-authored-by: ckerr <70381+ckerr@users.noreply.github.com>
2026-02-04 07:44:50 -06:00
Charles Kerr
f9d4ced2d0 chore: remove FMT_STRING macros (#8354) 2026-02-04 07:44:33 -06:00
Yat Ho
a1228ab1dd Revert "feat: inline delete prompt in remove dialog (#7000)" (#8349)
This reverts commit b0b8902198.
2026-02-03 23:33:50 -06:00
Charles Kerr
ca873c4ba2 fix: encryption mode not saved between sessions in GTK client (#8348) 2026-02-03 22:07:46 -06:00
Cœur
c9434a8917 Fix: torrent-metainfo unexpected: path (#8316)
* Fix: torrent-metainfo unexpected: path

* code review: adopt `ArrayKey`
2026-02-03 19:29:33 -06:00
Cœur
507a348611 docs: document different macOS versions needed for building vs running 2026-02-03 19:28:41 -06:00
Charles Kerr
bd4f81f87c fix: race condition when removing torrents in GTK client (#8341)
* fix: race condition crash when removing torrents in GTK client

* refactor: remove unused on_remove_done arg from tr_torrentRemove()
2026-02-03 18:10:54 -06:00
Charles Kerr
90402fd97b refactor: move StatsMode to tr::app (#8330)
* refactor: add StatsMode to libtransmission-app

* test: add display-mode unit tests

* feat: add apicompat for StatsMode

* refactor: use StatsMode in Qt client

* refactor: add template method for gtr_set_pref()

* refactor: use StatsMode in GTK client

* ci: use the all-tests alias instead of hardcoding tests

* ci: copy runtime DLLS into test output directory for Windows test binaries
2026-02-03 09:52:49 -06:00
Charles Kerr
b4c4047ab7 docs: add PR release notes guidelines (#8320)
* docs: add PR release notes guidelines

* fix: copypaste error
2026-02-03 08:44:00 -06:00
Charles Kerr
64a53a8219 refactor: use sigslot (#8309)
* fix: warning: declaration shadows a variable in the global namespace [clang-diagnostic-shadow]

* fix: warning: use 'contains' to check for membership [readability-container-contains]

* fix: warning: variable gl_confdir can be made static or moved into an anonymous namespace to enforce internal linkage [misc-use-internal-linkage]

* warning: function 'TorrentFilter::match_mode' has a definition with different parameter names [readability-inconsistent-declaration-parameter-name]

* build: add sigslot dependency

* refactor: use sigslot for tr::Blocklists

* refactor: use sigslot for torrent, peer-mgr, wishlist

* refactor: remove tr::SimpleObservable

* chore: make lint happy

warning: method 'make_wishlist' can be made static [readability-convert-member-functions-to-static]

warning: invalid case style for function 'make_wishlist' [readability-identifier-naming]

warning: do not declare C-style arrays, use std::array<> instead [cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays]

* refactor: remove unused forward declaration of tr_peer

* chore: remove slop

* refactor: Blocklist::observe_changes() now returns a scoped connection

* build: use transmission/sigslot fork

* refactor: copyediting

* refactor: fix cyclical dependency loop between Wishlist and tr_peerMgr::WishlistMediator
2026-02-02 22:42:28 -06:00
corncobble
2d740b8d8c docs: update references in rpc-spec.md (#8319) 2026-02-02 07:12:04 -06:00
Charles Kerr
3c9a523573 perf: faster arrow key navigation in torrent list (#8315)
* perf: when selection changes, only update the rows whose selection changed

previously we were updating all rows

* perf: coalesce pending reloads in TorrentTableView

* refactor: return a copy rather thabn a mutable index

* refactor: move the assignment out of the if statement

* make symmetricDifference an NSIndexSet method
2026-02-01 21:01:28 -06:00
Charles Kerr
2649e7acdd refactor: use std::filesystem for more file utils (#8296)
* fix: warning: declaration shadows a variable in the global namespace [clang-diagnostic-shadow]

* fix: warning: use 'contains' to check for membership [readability-container-contains]

* fix: warning: variable gl_confdir can be made static or moved into an anonymous namespace to enforce internal linkage [misc-use-internal-linkage]

* warning: function 'TorrentFilter::match_mode' has a definition with different parameter names [readability-inconsistent-declaration-parameter-name]

* refactor: use std::filesystem for tr_sys_path_is_same()

* refactor: use std::filesystem for tr_sys_path_exists()

* refactor: use std::filesystem for tr_sys_path_is_relative()

* refactor: use std::filesystem for tr_sys_path_get_info()

* refactor: use std::filesystem for tr_sys_dir_create()

* refactor: add `maybe_set_error()` helper

* refactor: change behavior to match previous impl

* fix: tr_sys_path_is_same() checks

refactor: address code review feedback

* refactor: address code review feedback

* chore: fix readability-else-after-return clang-tidy warning

* fix: warning: Value stored to 'created' during its initialization is never read [clang-analyzer-deadcode.DeadStores]

fix: warning: parameter 'permissions' is unused [misc-unused-parameters]

* ci: work around a MSVC STL 14.44.35207 clang-tidy false warning

* refactor: simplify return logic of tr_sys_path_is_same()
2026-02-01 15:37:37 -06:00
reardonia
c1e4221a75 introduce 3 priority levels to session event loop, set peer traffic t… (#7140)
* introduce 3 priority levels to session event loop, set peer traffic to lower priority than RPC events.

Co-authored-by: TR Reardon <reardonia@github.com>
2026-01-31 15:07:05 -06:00
Yat Ho
e38ace6b0f fix: -DENABLE_UTP=OFF FTBFS (#8301) 2026-01-31 12:53:58 -06:00
Yat Ho
28841f8d43 fix: periodically save queue position like other data files (#8299) 2026-01-31 07:39:06 -06:00
Yat Ho
3d09c4df4e build: support building with system fast_float (#8206) 2026-01-30 15:20:21 -06:00
Yat Ho
5c76b5b3d9 chore: bump libevent (#8130) 2026-01-30 13:33:18 -06:00
Charles Kerr
32b3f1ba43 fix: do not use underscore in gio action names (#8294) 2026-01-30 13:05:27 -06:00
Yat Ho
7a070c2305 fix: update changed dates after setting torrent queue position (#8292)
* Revert "fix: put torrent in "recently active" set after changing queue position (#8290)"

This reverts commit c4283e0c8f.

* fix: update changed dates after setting torrent queue position
2026-01-30 13:05:05 -06:00
Yat Ho
3a8a4d9b86 refactor: wrap std::filesystem::space calls (#8284)
Co-authored-by: Charles Kerr <charles@charleskerr.com>
2026-01-30 11:18:04 -06:00
Yat Ho
c4283e0c8f fix: put torrent in "recently active" set after changing queue position (#8290) 2026-01-30 08:59:18 -06:00
Yat Ho
db08054522 refactor: remove XFS specific code to use more portable code (#8289) 2026-01-30 08:56:26 -06:00
Charles Kerr
a61bdc24da refactor: use std::filesystem for tr_sys_path_resolve() (#8282) 2026-01-30 08:55:37 -06:00
Charles Kerr
c223e3bb64 perf: more efficient Torrent.updateTorrents() (#8280)
avoid unnecessary vector, manually coalesce notifications
2026-01-29 17:58:42 -06:00
Charles Kerr
b41ae71574 fix: cannot add magnet links in GTK client (#8278) 2026-01-29 16:46:59 -06:00
Yat Ho
63226411db build: improve building with system miniupnpc (#8190) 2026-01-29 15:29:52 -06:00
Charles Kerr
9723d7b4bd fix: crash on fail to update blocklist on GTK when assertions are enabled (#8274)
regressed in f8970a9 in 4.1.0-beta.5
2026-01-29 11:45:10 -06:00
Yat Ho
19c52a3e61 fix: pass UTF-8 strings into std::filesystem::path (#8269)
* feat: temporary replacement for `std::filesystem::u8path()`

* fix: pass UTF-8 strings into `std::filesystem::path`
2026-01-29 08:43:50 -06:00
Charles Kerr
dd008ae1d0 refactor: C++ify tr_torrentStat() (#8257)
* refactor: callers now own the return value of tr_torrentStat()

fix one potential thread issue by simplifying ownership

* refactor: make tr_stat_errtype an enum class; move into tr_stat

* refactor: order tr_stat fields to reduce padding

* chore: fix branch shear

* fix: int-to-enum-class comparison

* fix: namespace regression

* chore: make clang-tidy happy
2026-01-29 08:07:11 -06:00
Yat Ho
7de2aadb41 refactor: simplify session-thread.h with std::bind_front (#8262)
* chore: housekeeping

* refactor: simplify `session-thread.h` with `std::bind_front`
2026-01-29 08:06:23 -06:00
Yat Ho
34bf2c5b21 refactor: remove tr_sys_path_get_capacity (#8249)
* refactor: remove `tr_sys_path_get_capacity`

* code review: remove unused definitions
2026-01-28 21:32:24 -06:00
Yat Ho
754b295d2a chore(core, tests): fix modernize-loop-convert (#8235)
* chore(core, tests): fix `modernize-loop-convert`

* ci: bump sanitizer-tests-ubuntu to 24.04

Get newer clang to fix FTBFS.
2026-01-28 18:53:40 -06:00
Charles Kerr
554cc56bdf refactor: rename our namespace to tr (#8256)
tr and tr::app are less cluttered than libtransmission:: and transmission::app
2026-01-28 18:11:34 -06:00