github ikatson/rqbit v9.0.0-beta.2

13 hours ago

There were lots of changes and improvements since beta.1.

UI refactor and compact view

The UI was refactored and improved significantly. The old card view is still there, but on wider screens opens the compact layout by default.

  • Search bar to filter torrents by name
  • Status filter (all, downloading, seeding, paused, error)
  • Sortable columns (name, size, progress, speed, ETA)
  • Keyboard navigation (arrow keys, Enter to select)
  • Resizable detail pane with tabs for Overview, Files, Peers
  • Per-piece visualization showing download progress
  • Virtualization via react-virtuoso for handling 1000+ torrents smoothly

Here's how it looks on a mobile phone

localhost_3031_(iPhone 14 Pro Max)

Perf improvements

There were many perf improvements, including much better operation when disk is slow.

What's Changed

  • Fix shell completion output by @Jeidnx in #413
  • [UX]: rqbit download tweaks + README updates by @ikatson in #414
  • [feature]: rqbit share CLI command by @ikatson in #415
  • [feature]: local service discovery by @ikatson in #416
  • [fix] various tweaks and fixes by @ikatson in #417
  • [feature] TCP connect now uses the same source port as announce port by @ikatson in #418
  • [fix] PEX: do not linger the task when the peer is dead by @ikatson in #419
  • [optimization] PEX: dont send local network peers to public by @ikatson in #420
  • [refactor] tweak error and log messages by @ikatson in #422
  • [perf] reduce memcpy by using pwritev on unix + rewrite protocol parsing for it by @ikatson in #421
  • [perf] read vectored by @ikatson in #423
  • [refactor] remove a bunch of unused stuff and specialized some generics by @ikatson in #424
  • [fix] upnp + IPv6: disable link-local responses by @ikatson in #427
  • [perf] various lower level perf optimizations by @ikatson in #428
  • [refactor] bencode: remove the hack for info hash computation by @ikatson in #430
  • [fix] http trackers: support responses with trailing bytes by @ikatson in #431
  • [fix] fix a recently introduced bug with ut_metadata by @ikatson in #432
  • Fix build errors when sha1 is missing by @ikatson in #433
  • various refactorings by @ikatson in #434
  • [fix][feature] various small fixes and tweaks by @ikatson in #435
  • [fix] bencode: parsing negative integers by @ikatson in #436
  • [perf] decrease CPU usage due to disabling tracing in several places by @ikatson in #437
  • [refactor] code reuse in rqbit's main.rs by @ikatson in #438
  • [perf] upgrade librqbit-utp + remove deadlock detection by @ikatson in #442
  • [perf] librqbit-utp vectored read + vectored write by @ikatson in #443
  • [feature] add peer uploaded bytes stat by @ikatson in #444
  • [feature] bind to a specific network device by @ikatson in #445
  • [refactor] tweak blocklist code by @ikatson in #446
  • [memory] blocklist - split into v4/v6 to save memory by @ikatson in #448
  • [fixes] various small fixes by @ikatson in #449
  • [feature] support filenames that are invalid utf-8 by @ikatson in #453
  • [feat] librqbit: support ephemeral ports when listening. by @ikatson in #455
  • [feature] detect non-utf8 character encodings + big refactor to validate the torrent once at init by @ikatson in #456
  • Update README for Homebrew install by @rossmacarthur in #459
  • Fix typo in shell completions command by @brendanny in #461
  • Update deps by @ikatson in #467
  • apply fmt 2024 (fix clippy warnings) by @oooo-ps in #475
  • Fix cargo warnings by @exbit in #479
  • Fix typos by @marsam in #480
  • Allow specifying DHT bootstrap nodes from commandline or environment by @crass in #485
  • Update dependencies by @ikatson in #488
  • Allowlist option (based on the shared registry implementation) by @oooo-ps in #497
  • require clippy + rustfmt for all targets by @oooo-ps in #498
  • streaming: support ranges with end by @ikatson in #503
  • Upgrade console-subscriber to 0.5 by @bbb651 in #513
  • Use serde_derive dependency instead of serde/derive feature by @bbb651 in #511
  • docs: AddTorrentOptions::overwrite required even with complete torrent by @angrynode in #515
  • Introduce "block_in_place" concurrency limit by @ikatson in #521
  • Async disk bitv flushing (remove mmap) by @ikatson in #522
  • Streaming: blocking permit for the whole stream duration by @ikatson in #523
  • PEX: kill the task as soon as peer dies by @ikatson in #530
  • Compact UI v2 by @ikatson in #529
  • Network Connectivity Improvements (Add Announce Port Override And ipv4-only Mode) by @alexmichaelkeith in #531
  • fix: piece state tracking and peer connection handling improvement by @ikatson in #532
  • refactor: migrate to workspace dependencies by @ikatson in #534

New Contributors

Full Changelog: v9.0.0-beta.1...v9.0.0-beta.2

Don't miss a new rqbit release

NewReleases is sending notifications on new releases.