Feature Changes
BitTorrent:
- rewrite piece scheduling with a strict endgame that never asks one peer for the same block twice
- ban peers whose blocks keep failing hash checks (bt-ban-corrupt-peers, bt-ban-corrupt-strikes)
- answer Cancel with Reject (BEP 6), advertise reqq and upload_only, keep tracker tier failover
- add a live session-wide connection budget (bt-max-connections, default 400) with a reserve for magnet metadata fetches, and treat descriptor exhaustion as back-pressure
- serve uploads from a bounded read cache of 128 KiB windows instead of one read per block
- adapt upload slots between 4 and 12 like libtorrent's rate-based choker, with a separate optimistic slot and smoothed rates
- leave UPnP mappings of other LAN hosts alone, rename files whose sanitized paths collide, stop torrents gracefully on shutdown and rebuild SOCKS5 UDP associations
Engines and app:
- share one rate limiter across HTTP, BT, ed2k and Usenet and apply limit changes live
- wake idle HTTP workers on demand instead of polling every 100 ms
- pipeline NNTP article requests and fetch PAR2 recovery volumes only when repair needs them
- resume ed2k downloads from a .part file with an MD4-verified sidecar, support files over 4 GiB with large-file capable peers, re-ask queued sources and run Kad as a sliding-window lookup
- give each HLS task its own temp folder and add the giFT toggle and connection settings
- generate an RPC secret on first run and reject browser-origin and state-changing GET calls
- create the tray panel and clipboard prompt windows on first use and virtualize long lists
- fix the Android Gradle script and gate desktop-only helpers out of Android builds
Release and CI:
- All release progress can be driven by creating release in github now
- publish npm packages only after every app build of the release succeeded
- drop packages/* from the pnpm workspace so the lockfile no longer pins unpublished packages
- build only macOS x64, Windows x64 and Android arm64 for manual runs
- install only platform-tools in setup-android
Breaking Changes
- The RPC server now requires a secret, one is generated on first run. Browser-origin requests and state-changing GET calls are rejected while no secret is set.
- BitTorrent binds
listen-port21301by default instead of an ephemeral port. - a DoH
NXDOMAINorNODATAanswer no longer falls back to system DNS. - re-adding a torrent whose info hash belongs to a stopped task is refused.
- Firefox and Safari host-only cookies now match the exact host only.
- ed2k downloads use <name>.part with a <name>.part.met sidecar.
- the engine no longer defaults
allow-overwrite,continue,follow-torrent,bt-enable-lpd,bt-exclude-tracker,enable-dht,enable-dht6orenable-peer-exchange. Saved values are still accepted but have no effect. - risuko-bt removes
SessionOptions.list_onlyandListOnlyResponse.
Full Changelog: https://github.com/YueMiyuki/Risuko/compare/v0.7.1...v1.0.0