Commit Graph

16761 Commits

Author SHA1 Message Date
Yat Ho
851881b59f chore: update web dependencies (#8534)
* chore: bump esbuild@0.27

* chore: bump eslint-plugin-unicorn@63

* chore: bump globals@17

* chore: bump stylelint@17

* chore: pin eslint-plugin-sonarjs@3.0.5

https://github.com/SonarSource/SonarJS/pull/6148 added a dependency that's not declared in the package.json. And of course it's AI slop.

* chore: re-generate package-lock.json

* fix: lint errors

* ci: temporarily enable arm64 NetBSD runner

* Revert "ci: temporarily enable arm64 NetBSD runner"

This reverts commit 39c9be3978.
2026-02-18 15:20:47 -06:00
Charles Kerr
1b1ccc08dc ci: run fewer redundant jobs (#8543)
* ci: move crypto tests into their own matrix

they do not need to run on both bsd 14 and bsd 15

* ci: remove matrix for the DISABLE_UTP test

the "enabled" half of the matrix is redundant with other CI runs

* ci: cancel prior CI jobs when new commit(s) are pushed

* ci: futureproof fedora matrix by using aliases fedora-latest, fedora-rawhide

* ci: remove the -from-tarball job suffixes

* ci: fold the debian-11 job into the debian job matrix

* fixup! ci: fold the debian-11 job into the debian job matrix

fix: sh->bash mismatch

* ci: always use the default version of freebsd, openbsd

* ci: always use the default version of netbsd

* ci: always use the default version of dragonflybsd

* ci: remove unused fail-fast setting
2026-02-18 14:40:46 -06:00
Yat Ho
6ad5a4ae31 test: info hash for unordered info dict (#8558) 2026-02-18 12:02:24 -06:00
Charles Kerr
b9e9feafeb fix: crash when removing a torrent that the inspector is showing (#8496) (#8553) 2026-02-17 22:23:12 -06:00
Yat Ho
6abccce6c6 ci: delete leftover ENABLE_DEPRECATED references (#8535) 2026-02-17 18:00:10 -06:00
Charles Kerr
aa8039cfb5 refactor: safeguard against nullptr tr_torrent* args in tr_torrentFoo() methods (#8550)
* refactor: safeguard against nullptr `tr_torrent*` args in `tr_torrentFoo()` methods (#8504)

* feat: safeguard tr_torrentFoo() calls against nullptr torrents

* refactor: tr_log_if_fail(tr_isTorrent(tor))

* test: add tests for invalid args to torrent C API

* fix: cppcoreguidelines-pro-type-member-init

* fix: readability-simplify-boolean-expr
2026-02-17 17:58:34 -06:00
Charles Kerr
c3b5fab4f4 fix: FTBFS with glibmm-2.68 (#8552)
13:45:53 /home/fedora/jenkins/workspace/trunk-linux/transmission-4.1.0-beta.5+r6c92d06854/gtk/DetailsDialog.cc:974:52:   required from here
13:45:53   974 |         bool const is_uniform = std::ranges::all_of(stats, [&baseline](auto const& st) { return baseline == st.error_string; });
13:45:53       |                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
13:45:53 /usr/include/glibmm-2.68/glibmm/ustring.h:1501:22: error: no matching function for call to ‘Glib::ustring::compare(const std::__cxx11::basic_string<char>&) const’
13:45:53  1501 |   return (lhs.compare(rhs) == 0);
13:45:53       |           ~~~~~~~~~~~^~~~~
2026-02-17 17:58:21 -06:00
Yat Ho
fc309238ce ci(gtk): run clang-tidy (#8251)
* ci: infra for parallel clang-tidy runs

* ci(gtk): run clang-tidy

* chore(gtk): silence warnings

* code review: use constexpr auto

* code review: use constants over magic numbers in Utils.cc

* code review: use `std::ignore` to ignore return value

* code review: add back visibility labels that indicated sections

* fix: wrap each command argument in single quotes
2026-02-17 17:53:01 -06:00
Yat Ho
6c92d06854 refactor: store dynamic quarks as char8_t (#8546) 2026-02-17 13:26:28 -06:00
Charles Kerr
ae332d575c Revert "ci: run big-endian tests in GitHub Actions (#8539)" (#8548)
This reverts commit 7eeb78174c.
2026-02-17 09:36:16 -06:00
Yat Ho
e44b261f92 refactor: store static quarks as char8_t (#8532) 2026-02-17 00:41:17 -06:00
Charles Kerr
7eeb78174c ci: run big-endian tests in GitHub Actions (#8539)
* ci: run big-endian tests in GitHub Actions

* ci: use debian:stable-slim and ubuntu-latest for big-endian tests

this way we will not have to periodically bump them

* ci: do not use -j nproc in qemu

* ci: cross-compile and then run the big-endian tests in qemu
2026-02-16 21:51:38 -06:00
Charles Kerr
27f2fa88ed perf: permanently cache Torrent.hashString (#8505) (#8536) 2026-02-16 12:16:35 -06:00
Dmitry Lobanov
5dbe953152 perf: remove torrents group title field setup. (#8498)
* Remove torrents group title field setup.

* Return selected color in group cell.

* Apply linter rules.
2026-02-16 12:00:57 -05:00
reardonia
31047493f5 UTF8-clean torrent 'path' (#8328)
* fix: mask non-UTF-8 characters in torrent file paths

BEP-3 requires strings to be UTF-8. Run path components through
tr_strv_to_utf8_string() to replace invalid bytes with U+FFFD
before sanitizing. Adds test with good and bad UTF-8 paths.

* replace ctrl characters in 'name' and 'path'

* Revert "replace ctrl characters in 'name' and 'path'"

This reverts commit 6816f59295.

* fix: mask non-UTF-8 characters in torrent file paths

BEP-3 requires strings to be UTF-8. Run path components through
tr_strv_to_utf8_string() to replace invalid bytes with U+FFFD
before sanitizing. Adds test with good and bad UTF-8 paths.

* replace ctrl characters in 'name' and 'path'

* Revert "replace ctrl characters in 'name' and 'path'"

This reverts commit 6816f59295.

* prepare for future Bittorrent v2 usage
2026-02-16 08:49:20 -06:00
Charles Kerr
40ae72888c fix: potential fd leak when running scripts (#8524) 2026-02-15 23:06:49 -06:00
Charles Kerr
1e33e950b2 fix: limit the number of simultaneous connections libcurl can have (#8525) 2026-02-15 23:06:28 -06:00
Charles Kerr
a9068d73ad refactor: use spaceship operator in tr::Values (#8518) 2026-02-15 23:06:02 -06:00
Yat Ho
1e14cc605b refactor: migrate to Madler's crc32c (#8475) 2026-02-15 15:16:01 -06:00
Yat Ho
5e9e543caf fix: warning in tr-dht.cc (#8519) 2026-02-15 15:10:30 -06:00
github-actions[bot]
bbe7227b1f chore: update generated transmission-web files (#8515)
Co-authored-by: ckerr <70381+ckerr@users.noreply.github.com>
2026-02-15 11:51:00 -06:00
Charles Kerr
8b271236a5 fix: UI update regression (#8419)
introduced last week by 1dd096e77
2026-02-15 09:31:59 -06:00
Charles Kerr
e29acee865 fix: cannot add magnet links from the command line (#8415) (#8476) 2026-02-15 01:19:42 -06:00
Charles Kerr
f5961aa561 fix: crash in torrent rename dialog after torrent removal (#8425) (#8501) 2026-02-15 01:19:15 -06:00
Ivan Kara
30bc84ebc9 feat(web): torrent list virtualization (#7674)
* add clusterize

* fix include clusterize css

* fix scroll jumping on very large list

* fix rapid fire of rpc calls when inspector is visible

* ensure detailed torrent data is fetched on selection changes too

* stop dispatching selection changed event on refilter

* remove duplicate event listener for torrent row clicks

* fix scroll into view and remove unnecessary stuff

* fix missing context menu

* fix missing row click

* set last torrent clicked id on right click

* remove unused variable

* Reduce clusterize row render count

* Remove excessive context_menu

* Tidy up a bit

* Restore unnecessary changes

* Apply prettier fix
2026-02-15 01:17:01 -06:00
github-actions[bot]
1e68c41da8 chore: update generated transmission-web files (#8385)
Co-authored-by: ckerr <70381+ckerr@users.noreply.github.com>
2026-02-14 17:31:29 -06:00
Yat Ho
3f9d3b945b fix(ci): install NetBSD X Window binary sets when building gtk (#8503) 2026-02-14 17:20:47 -06:00
Yat Ho
8fecf2662c docs(rpc): formally define torrent ID and transfer stats as integers (#8455) 2026-02-13 21:04:05 -06:00
Антон Лобанов
34ef311055 docs: add nuget package to list of 3rd party packages 2026-02-13 21:03:10 -06:00
Yat Ho
031c996386 fix(test): wait for previous torrent to be removed before continuing (#8477) 2026-02-13 18:13:24 -06:00
Yat Ho
a00a8ba511 ci: include .github/actions in check-diffs (#8482) 2026-02-13 13:55:11 -06:00
Yat Ho
064387c164 docs: deprecate torrent_get.webseeds (#8481) 2026-02-13 13:10:50 -06:00
Yat Ho
c7ea8d688e ci(GHA): bsd (#7901)
* ci: add freebsd

* ci: add openbsd

* ci: add netbsd

* ci: add dragonflybsd

* ci: don't run arm64 bsd runners in pull requests
2026-02-13 09:44:53 -06:00
Ivan Kara
eac1f24f0b feat(web): add webseeds list (#8421)
* Add webseeds list to web ui

* Better webseed url column title

* Apply suggestions

* Follow existing table row creation style

* Fix webseed table speed-down column

* Fix empty class error

* Add webseeds_ex to rpc changelogs

* Apply suggestions from CI

* Fix webseeds_ex rpc spec
2026-02-13 09:16:35 -06:00
Yat Ho
93a65c9c66 ci: test gtk4 where available (#8459)
* ci: test gtk4 where available

* ci: bump Fedora versions
2026-02-13 08:43:22 -06:00
Charles Kerr
57965724cb fix: crash when editing tracker list immediately after editing torrent (#8469) 2026-02-13 08:00:35 -06:00
Charles Kerr
6ae3abc7c1 chore: remove unused #include (#8470) 2026-02-13 07:59:51 -06:00
reardonia
04922eca8d reject .torrent files with missing info:[pieces] key (#8333)
* reject .torrent files with missing info:[pieces] key

* reduce test torrent size

* add more tests for bad 'pieces' key

* use files_.total_size()

* fixup code_style

* anonymize piece hashes

* move dupe files check to finishInfoDict()

* better piece count comparison

* add test for dupe files

* revert else if -> else

* update for #8409, move tests to torrents-metainfo suite

* add test for duplicate pieces key and tidy

* deeper testing of error conditions

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

---------

Co-authored-by: Yat Ho <lagoho7@gmail.com>
2026-02-12 11:36:55 -06:00
Yat Ho
89b8e9ae9d fixup! feat: allow non-ASCII announce and webseed URLs (#8420) (#8447) 2026-02-12 11:36:23 -06:00
Yat Ho
6943855f7d fixup! ci(app): run clang-tidy (#8442) (#8460) 2026-02-12 11:35:58 -06:00
Yat Ho
bbfc9e057c chore: bump rpc versions (#8452) 2026-02-12 10:40:35 -06:00
Yat Ho
455fce4a78 ci(macos): install only required modules of qt (#8458) 2026-02-12 10:38:01 -06:00
Yat Ho
e3853d9750 build: remove ENABLE_DEPRECATED (#8461) 2026-02-12 09:56:50 -06:00
Ivan Kara
cb158cba04 feat: add multiple dht bootstrap nodes (#8446)
* Add multiple dht bootstrap nodes

* Implement suggestion

* Rename default_bootstraps to DefaultBootstraps
2026-02-12 01:16:01 -06:00
Yat Ho
cd920a7bec ci(app): run clang-tidy (#8442)
* fix(app): clang-tidy warnings

* build(app): convert checks to list

* build(app): fix clang-tidy `HeaderFilterRegex`

* ci(app): run clang-tidy

* fix: ftbfs

* wtf
2026-02-12 00:23:00 -06:00
Charles Kerr
e6d7d42e2a fix: mime-type icons on Windows (#8443)
* fix: mime-type icons on Windows

* fixup! fix: mime-type icons on Windows

use file_icon_ as the fallback icon

do not  mark the temp string as translatable

---------

Co-authored-by: Mike Gelfand <mikedld@users.noreply.github.com>
2026-02-11 22:49:24 -06:00
Charles Kerr
cbaefab599 refactor: add libtransmission/types.h (#8449)
refactor: add libtransission/constants.h
2026-02-11 16:52:29 -06:00
Charles Kerr
21874392a9 refactor: string-utils, file-utils, env (#8417)
* refactor: add libtransmission/string-utils

* refactor: add libtransmission/file-utils

* refactor: add libtransmission/env

* build: update Xcode
2026-02-11 11:21:45 -06:00
Yat Ho
4d695a8a4c perf: use timer to flush outbuf to avoid taking lock frequently (#8423)
* perf: use timer to flush outbuf to avoid taking lock frequently

* code review: extract to `flush_outbuf_soon()`

* code review: make `flush_outbuf_trigger_` const
2026-02-11 10:21:31 -06:00
Charles Kerr
831ebe6198 fix: adding file:/// uris from the command linee (#8424) 2026-02-11 09:57:56 -06:00