Highlights
(see detailed list below for the contributor credits)
rtorrent settings (#3140/#3145 line of work)
- Max open files / max open HTTP connections actually take effect on 0.16.19+ (was writing max_alloc, a ceiling that can't raise)
- Reports the effective HTTP limit back, and rolls back an allocation rtorrent rejected
- Says why a settings write was refused instead of silently reverting; every write is logged
- Corrected the 0.10.2 alias gate, and direct d.multicall on 0.16.16+
Security
- XMLRPC proxy: load.* parameter handling hardened, proxy decision separated from the send (#3181/#3183)
- snoopy: opt-in guard against fetches into private networks; protocol-relative Location resolved against its own host (SSRF surface)
erasedata
- Deletes the data of downloads rtorrent never opened — the long-standing "files stay on disk until a Force Recheck" report
mobile
- Theme, accent colour and sort order now persist across reload and new sessions
- Seeding Time rendered as the duration it already is; clock-offset fix covers the mobile pane too
rutracker_check / kinozal
- A page reload no longer postpones the hourly check
- Kinozal login wall re-detected instead of being reported as deletions; stops re-asking once the session is known gone
- A missing ratio view no longer breaks the replacement load
- Plugin debug flag settable from conf/config.php
Time and clock
- Stale time deltas after browser sleep / tab suspension fixed
- Clock skew no longer shifts absolute dates; the offset is taken from the header meant for it
Concurrency / data integrity
- History: concurrent writers no longer erase each other's records
- Cache: concurrent writes merged under a per-key lock
- History no longer logs rTorrent's magnet placeholder as a user event
Diagnostics
- env_check.php detects that ruTorrent has never registered its handlers with rtorrent — the cause behind "torrents added by autobrr/*arr get no ratio group, added time or history"
UI / rendering
- Tracker status messages render clickable URLs with XSS sanitization
- Finished partial downloads get their own status
- Details pane drops when its torrent disappears; detail polls fail quietly
- Oblivion/OblivionBlue scrollbars fixed for Firefox 153
- RSS: legacy XML encodings normalized
Process hygiene
- Plugin background spawns are detached instead of using execute.nothrow.bg (zombie processes)
What's Changed
- options: force a row break before the numeric settings fields by @xirvik in #3143
- feat(webui): make HTTP/HTTPS URLs clickable in Tracker Status by @jakobbg in #3141
- tests: cover the global helpers in js/common.js by @xirvik in #3144
- fix(webui): exclude trailing HTML entities, escaped quotes, and brackets from tracker status URLs by @jakobbg in #3147
- Detach plugin background spawns instead of using execute.nothrow.bg by @xirvik in #3146
- Fix/max open files settings by @xirvik in #3145
- Fix grammatical errors in user-facing English text by @xirvik in #3150
- Fix stale time deltas after browser sleep/tab suspension by @jakobbg in #3149
- erasedata: delete the data of downloads rtorrent has not opened by @xirvik in #3154
- Fix Oblivion scrollbars in Firefox 153 by @chiphead2332 in #3153
- mobile: remember the theme, accent color and sort order by @xirvik in #3157
- Say what is expected of a pull request, and drop the develop download by @xirvik in #3161
- rutracker_check: stop a page reload from postponing the hourly check by @IvanShift in #3163
- Stop page reloads from postponing the remaining plugin schedules by @xirvik in #3171
- Add an opt-in guard against fetches into private networks by @xirvik in #3160
- lint: use the config filename editorconfig-checker 5 actually reads by @IvanShift in #3164
- Give the test runner an absolute DIR, and say so when a fixture i… by @xirvik in #3172
- webui: stop clock skew from shifting absolute dates by @IvanShift in #3166
- Take the clock offset from the header meant for it, and cover the mobile panel by @xirvik in #3173
- rss: normalize legacy XML document encodings before parsing by @IvanShift in #3170
- Snoopy: resolve a protocol-relative Location against its own host by @IvanShift in #3165
- webui: drop the details pane when its torrent disappears, and let detail polls fail quietly by @IvanShift in #3168
- cache: merge concurrent writes under a per-key lock by @IvanShift in #3169
- rtorrent: fix the 0.10.2 alias gate and d.multicall routing, pin the command tables with a regression test by @IvanShift in #3167
- rutracker_check: let conf/config.php set the plugin's debug flag by @IvanShift in #3174
- rutracker_check: reuse an NNMClub torrent's own passkey on update by @IvanShift in #3175
- kinozal: stop reporting live topics as deleted when the session has expired by @IvanShift in #3176
- rutracker_check: a missing ratio view must not break the replacement load by @IvanShift in #3177
- history: stop logging rTorrent's magnet placeholder as a user event by @IvanShift in #3178
- feat:webui: give a finished partial download its own status by @IvanShift in #3179
- Harden the XMLRPC proxy's load parameter handling by @xirvik in #3181
- Check that ruTorrent has registered its handlers with rtorrent by @xirvik in #3182
- Separate the XMLRPC proxy decision from the sending of it by @xirvik in #3183
- Bump version to 5.3.12 by @xirvik in #3184
New Contributors
- @chiphead2332 made their first contribution in #3153
Full Changelog: v5.3.11...v5.3.12