* refactor: remove unused appname arg from tr_sessionLoadSettings()
* refactor: swap order of arguments to tr_sessionLoadSettings()
so way the optional arg can go at the end
* refactor: add quarks for the RPC method names
* update tr_quark_convert() to handle RPC method names
* refactor: use interned keys for RPC method names
* test: add torrentGetLegacy test
* refactor: use interned keys for RPC method names in tr-qt
* refactor: use interned keys for RPC method names in tr-remote
* refactor: use interned keys for RPC method names in tests
* refactor: use interned keys for RPC method names in tr-gtk
* chore: fix readability-identifier-naming regression
* unbreak ChangeFlag bitwise operations (Fix#7572)
8 bits is not enough to do bitwise comparisons on more than 8 independent
values: use std:bitset to ensure proper bitwise operations inside
ChangeFlags().
* refactor: use bitset methods and specify TR_CONSTEXPR23
---------
Co-authored-by: Yat Ho <lagoho7@gmail.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: bump fmt to 11.2.0
Acquire 6797f0c39a, which fixes compile error on GCC 15.1.
Acquire
9f269062a7,
which fixes buffer overflow in NetBSD 10.1 on GCC 10.5.
Replace `fmt::localtime` with `std::localtime`, as `fmt::` is now
deprecated.
* fix: format timezone ourselves on Windows
{fmt} 11.2.0 removed the ability to format `std::tm` with the format specifier `%z` on Windows, for a good reason. Ref: https://github.com/fmtlib/fmt/issues/4444
This forces us to implement our own solution on Windows as there's no alternative.
* fix: support `FMT_USE_EXCEPTIONS`
* build: clang-tidy headers when building libtransmission
* chore: revert `= default` workaround
It was introduced in 6909ec0bad to fix build issues with macOS 10.14. We
no longer support that version.
* fix: clang-tidy warnings for libtransmission
* build: clang-tidy headers when building tests
* fix: clang-tidy warnings for tests
* build: clang-tidy headers when building qt
* code review: don't manually edit mime-types.h
* code review: unify variable naming for static private members
* fix: operator== should return bool in tr_strbuf
Fixes build error with C++20/C++23
error: return type 'auto' of selected 'operator==' function for rewritten '!=' comparison is not 'bool'
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com>
* fix: explicitly specify Blocklist::size() return type as size_t
Fixes building with C++20/C++23
error: no matching function for call to 'size'
function 'size' with deduced return type cannot be used before it is defined
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com>
* fix: wrap runtime format strings with fmt::runtime in library, daemon and cli
fmt::format_string ctor is consteval with C++20
See https://github.com/fmtlib/fmt/issues/2438
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com>
* fix: wrap runtime format strings with fmt::runtime for GTK client
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com>
* fix: allow to override C and CXX standard via cmdline or env
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com>
* fix: add job to check if transmission compiles with C++23
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com>
* Address code review by mikedld
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com>
* fix new found fmt build errors
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com>
* Address code review by tearfur
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com>
* fix: make tr_net_init_mgr singleton buildable with C++23
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com>
---------
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* Setting default focus in Open URL and Add Tracker dialog box
* Additional cleanup to remove duplication of responsibility in setting focus
* Removing now un-necessary code in TorrentUrlChooserDialog.ui
* Using activates-default property to enable default action in torrent url chooser and tracker adder
* removing un-necessary focus
* Adding missing property to the accept buttons.
* Removing unintended whitespace change in
TorrentUrlChooserDialog
* Use `True` instead of `1` for booleans (GTK3)
* Reformat GTK *.ui files
Remove useless comments since we're mostly editing those files by hand
now. Wrap multi-line text values in CDATA to avoid automated formatters
changing whitespace there in any way. Collapse empty elements.
* Switch from plain `GtkLabel`s to `GtkFrame`s for sections
Frames are reported as groupings by assistive technologies.
* Fix minor usability issues
* Make value labels labelled and selectable
Manually calculated font size needs to be recalculated (which we weren't
doing), otherwise leading to wrong size on global font size and/or scale
factor changes.
Simplify file list columns setup where possible.
Since gtkmm 4.15.0 a new overload for Gdk::Cursor::create exists
which creates an ambiguity when passing a string literal.
We can avoid the ambiguity by explicitly constructing a Glib::ustring
from the string literal before calling the method.
https://gitlab.gnome.org/GNOME/gtkmm/-/issues/159
* fix: accurate timestamp in daemon logs
* fix: gtk build errors
* fixup! fix: gtk build errors
* code review: use system_clock typedefs
* code review: use the full buffer for string view
* fixup! fix: accurate timestamp in daemon logs
* code review: limit exposure of `using`
* Remove `tr_file_move_strict()`, add param to `tr_file_move()` instead
Also restores proper `local_error` logic to handle null error param.
* Remove unused `moved_files` logic
* Rename the callback type and params to match rename decls
* Add torrent ID param to torrent removal callback
* Remove mutex from torrent removal callback
Torrent IDs aren't reused during the lifetime of the session.
* Move main removal callback logic into a separate method
* Do not remove torrent if trashing files failed.
Instead, stop the torrent and sets an error.
* Fixing GTK interface with new file removal behavior.
* C++17 compliant.
* Reverting unrelated change.
* Avoiding allocating unecessary objects.
* Easy review fixes.
* Fixing merge error.
* Adding result callback to tr_torrentRemove().
Using the new callback in Gtk GUI to decide when to remove it from the
interface.
* Reducing indentation level and making the function more readable.
* Using existing Session RefPtr.
* Notifying the client before freeing the torrent in the session.
* Addressing comments and synchronizing callback.
* Moving include.
* Fix constness issue reported by clang-tidy
* Create a new shared location for icons and update qt scripts to package public icons
* Move the Faenza.qrc back to original location
* Revert "Move the Faenza.qrc back to original location"
This reverts commit 963e099d65.
* Replace Faenza to its original location
* Remove attribution for an image that does not exist
* chore: do not include <set> unless we use it
* chore: do not include <map> unless we use it
* chore: do not include <string> unless we use it
* chore: do not include <list> unless we use it
* chore: do not include <memory> unless we use it
* chore: do not include <optional> unless we use it
* chore: do not include <functional> unless we use it
* perf: make pref_is_savable() constexpr
* refactor: use std::vector in tr_torrents::removedSince()
* chore: remove unused typedef in OptionsDialog
* perf: use std::vector in tr_num_parse_range()
* perf: use small::max_size_set in FileTreeItem::update()
* perf: use small:set in Wishlist::next()
* perf: use small:map in FilterBar
* perf: use small::map for counts in tr_logAddMessage()
* perf: use small::max_size_map in FileTreeModel::twiddleWanted()
perf: use small::max_size_map in FileTreeModel::twiddlePriority()
* perf: use a std::array instead of std::map in TorrentFilter::update()
* perf: use a std::array instead of std::map in TorrentSorter::set_mode()
* perf: use a std::array instead of std::map in TorrentSorter::update()
* perf: use small::set in Application::Impl::on_rpc_changed_idle()
* perf: use std::array for MessageLogColumnsModel::level_names_
* fixup! perf: use std::array for MessageLogColumnsModel::level_names_
* fixup! perf: use small::map for counts in tr_logAddMessage()
* fix: specify `port-test` ip protocol in response when possible
* feat: IPv4 and IPv6 port test in Qt Client
* feat: shorten timeout of `port-test`
* feat: IPv4 and IPv6 port test in Gtk Client
* chore: housekeeping
* refactor: remove IP protocol error message
* code review: mikedld gtk
* feat: return tag in qt rpc response
* code review: mikedld qt
* feat: move port test button up alongside spin button
* fixup! code review: mikedld gtk
* fixup! code review: mikedld qt
* code review: port status initial text
* feat: decouple ipv4 and ipv6 status updates (GTK)
* feat: decouple ipv4 and ipv6 status updates (Qt)
* code review: unknown protocols are non-pending
Co-authored-by: Mike Gelfand <mikedld@users.noreply.github.com>
* code review: simplify status text when the statuses are the same
* Revert "feat: return tag in qt rpc response"
This reverts commit 2a022c2bb0ee7ddad81f8176839cf0d043422368.
* code review: add translation context for status text (GTK)
* code review: move `port_test_pending_` to `Impl` (GTK)
* fixup! code review: move `port_test_pending_` to `Impl` (GTK)
---------
Co-authored-by: Mike Gelfand <mikedld@users.noreply.github.com>