* fix: hicpp-use-auto,modernize-use-auto
* refactor: make Prefs::getKey() a static method
refactor: make Prefs::isCore() a static method
refactor: make Prefs::type() a static method
* refactor: Application takes a Prefs& arg, not a std::unique_ptr<Prefs> arg
* fix: bugprone-exception-escape
save settings by calling prefs.save() from main()
* refactor: load settings by calling prefs.load() from main()
* refactor: use preferred declaration order in Prefs
* fixup! fix: bugprone-exception-escape
* refactor: add Prefs::current_values()
* refactor: clean up namespace use in Prefs.cc
* feat: add QString, QDateTime serializers
* test: add scaffolding for testing Qt code
test: add tests for Prefs
* refactor: remove unused #includes
* build: add clang-tidy rules to tests/qt/
* refactor: clean up the new test code a little
* chore: add missing copyright statement
* ci: ensure Qt6Test is installed
build: check for QTest when ENABLE_TESTS + ENABLE_QT are ON
* fixup! feat: add QString, QDateTime serializers
* fix: Wswitch warning
* build: do not disable tests in release/windows/build-qt5.psl, build-qt6.psl
* ci: set QT_QPA_PLATFORM for running new Qt tests
* test: build cleanly in Qt 5.15
* fixup! fixup! feat: add QString, QDateTime serializers
fix QDateTime serializer on macOS
* fixup! ci: set QT_QPA_PLATFORM for running new Qt tests
install xcb-util-cursor on alpine
* fix: url port parsing
- `tr_urlParse()` should fail if cannot parse port
- Avoid parsing scheme ports to numbers
- Port should not be parsed to a negative number
- Port should not be parsed to `0`
- Directly parse number string to `uint16_t`
* test: invalid port
* refactor: replace `std::lldiv` with `/` and `%`
`std::lldiv` is equivalent to `/` and `%` by definition, and compilers optimise `/` + `%`.
https://stackoverflow.com/a/4912226/11390656
* fix: `bugprone-narrowing-conversions` in `torrent-magnet.cc`
* code review: always divide by metadata piece size
* perf: make n_metadata_pieces constexpr noexcept
* refactor: use TrHttpServerDefaultBasePath in remote.cc
refactor: use TrHttpServerRpcRelativePath in remote.cc
* refactor: use TrHttpServerDefaultBasePath in rpc-server.cc
refactor: use TrHttpServerRpcRelativePath in rpc-server.cc
* refactor: remove unused TR_DEFAULT_RPC_URL_STR
* chore(mac): fix copyright year
* chore(mac): use em dash in copyright notice
* fix(ci): check for emdash in copyright notice
* fix(ci): process QuickLookExtension plist files
This will make the icons only appear in macOS 26+, without having to manually remove them for earlier releases. This also will allow us to use newer symbol images.
* refactor: replace should_convert_child_strings() with a State.path stack
* refactor: de-intern the TR_KEY_sort_ keys
* refactor: de-intern the TR_KEY_show_ keys
* feat: `settings.json` `encryption` is now string
* feat: api-compat for encryption in `settings.json`
* feat: rpc now uses the same strings as `settings.json` for encryption modes
* feat: api-compat for encryption in rpc
* code review: use `to_variant()`
Given the unreliable nature of network transfers, it's entirely possible for a requested block to arrive after it has timed out. We need to update the wishlist accordingly in cases like this.
* chore: update copyright year in COPYING
* chore: update copyright year in user-facing files (1)
* chore: update copyright year in user-facing files (2)
* chore: update copyright year in cmake/transmission.rc.in
---------
Co-authored-by: github-actions <github-actions@github.com>
* refactor: new `tr_torrent::bump_date_edited()`
* fix: `mark_edited()` should also bump `date_changed_`
* fix: torrent should be marked edited when setting labels
* fix: torrent should be marked change when setting file priority
* fix(remote): attach id to `session_set` requests
* fix(remote): attach id to `torrent_set` requests
* fix(remote): attach id to `torrent_set_location` requests
* fix(remote): attach id to `torrent_rename_path` requests