Repository navigation
v4.8.0
Platforms: linux, windows
Changes in v4.7.0..v4.8.0:
- release: v4.8.0, the link scanner's memory, writes into shared files, and the tracker error class
- fix(workflows): tracker_error_class takes the announce book before the tracker list
- feat(workflows): tracker_error_class is picked from its classes in the editor
- ui(workflows): condition fields grouped by what they describe
- feat(workflows): tracker_error_class, dead only when every tracker said dead
- ci(rust): the step that runs the tests says so in its name
- build(deps): actions/cache 6.1.0 in ci.yml
- ci(rust): compile once, run the tests once
- i18n(pt): three strings say 'now' in other words
- chore: generic names in two tests and a comment
- docs(readme): lead with what it does at scale and how it compares, a quick start, the two engines and how to upgrade
- chore: generic names in examples, comments, tests and bench scripts
- docs(changelog): the category-order entry gives generic category names as its example
- fix(pathclaim): the claim probe finds the torrents saved in or below a root by a search in a sorted list of folder hashes, not by walking every save path
- test(bench): cost of the roots index of the claim probe at the scale of the production
- fix(torrent): renaming a file enters the placement log and drops the write verdicts, like a move
- fix(pathclaim): the claim probe is kept true by the engines' placement log instead of the store, and a torrent whose files share no folder is looked up by each folder it uses
- fix(pathclaim): the claim probe finds nested roots in both directions and never answers from an index a recent add has made stale
- fix(pathclaim): the write path's claim probe looks the torrent's folder up in an in-memory index instead of listing a folder of the store
- fix(disk): the write comparison keeps no verdict it could not check, forgets it when the torrent moves, and a file proven by its interior only is accepted only where links are visible
- fix(disk): a piece is compared with the disk before it is written into a file with another hardlink or named by another torrent, without any state the proof job left
- fix(pathclaim): the hold counts and names the files missing from their expected place, and a recheck that verifies nothing because its files are absent says how many
- fix(pathclaim): an isolated torrent links the video it shares with another torrent even when the last piece also holds its own .nfo
- fix(pathclaim): a piece that falls in a shared file is written only if the disk already holds those bytes, and a torrent whose shared files only lack their edge pieces is no longer held
- test(peer): the busy-port round test stops asking again as soon as the round fails on the squatted port
- test(peer): the busy-uTP-port rebind test asks again while the TCP port reads as busy and while the new TCP port still answers, for a few seconds
- test(lsd): the LSD tests bind their port again for a few seconds while a neighbour test's forked child still holds its closed copy
- test(peer): a port closed a moment ago may still read as busy while a neighbour test's forked child holds its copy, so the rebind tests ask again for a few seconds before calling it kept
- fix(category): a single file in a folder of its own keeps that folder when moved or graduated to another category, and the emptied old folder is removed
- fix(linkscan): the summary is published again, a torrent measured too early is measured again, and the never-measured go first
- perf(linkscan): the link index is measured by a slow continuous walk, not by rounds that read everything
- perf(qbit): torrents/properties reads its own torrent's row, not the whole session's
- perf(linkscan): a round keeps the link index between rounds and re-reads it whole only every half hour
- style(config): cargo fmt over the peer fingerprint test
- refactor(config): a binding's own peer id is used only under the client's fingerprint
- refactor(config): the engine no longer reads peer_fingerprint and user_agent from a config