·
0 commits
to qbit-manage-core
since this release
First major release. v1.0.0 adds qbit_manage-style automation to qbit_controller, with diff-aware execution and a redesigned log surface.
New processes
- Auto-management — flips qBittorrent's automatic torrent management on, with a configurable
auto_management_ignore_tagslist. - Tracker tags — tags torrents based on tracker URL substring match. Multiple patterns can be combined with
|. - Tracker error tag — applies a configurable
issuetag (default) to torrents where at least one real (http/https/udp/ws/wss) tracker is in the Not working state and no real tracker is Working. Matches qbit_manage semantics — DHT/PeX/LSD pseudo-trackers and partially-working torrents are excluded. - Share limits — group-based ratio / seeding-time / upload-speed limits with category + tag matching. Supports
min_num_seedsandmin_seeding_timeprotection (limits are temporarily cleared and aMinSeedsNotMet/MinSeedTimeNotReachedtag is added until thresholds are met). Optionalcleanupflag deletes the torrent + data once the configured limit is reached. - Tag by name — adds tags when the torrent name contains a configured substring (e.g. release group).
- Category moves — rewrites a torrent's category when its current category + tag set matches a rule.
Diff-aware execution
All operations skip API calls and log lines when qBittorrent's current state already matches the desired state — auto-tmm flag, ratio / seeding-time / upload limits, and managed tags. Steady-state runs produce only the section headers and a summary block.
Logging
- Section headers (
=========== Section ===========) between each process. - Aligned action labels (
tag-add,tag-remove,apply,delete,cat-move,auto-tmm) padded to a fixed column width for easy visual scanning andgrep. [DRY-RUN]prefix on every action log when dry-run is enabled.- End-of-run Summary block with per-process counters: torrents inspected, auto-management enabled, tracker tags added/removed, share limits applied, share limits cleaned up, share-limit tags added/removed, name tags added, categories changed.
- Console + rolling file output configured via
log_config.yml.
Sample run:
=========== Auto management ===========
auto-tmm 12 torrent(s)
=========== Share limits ===========
tag-remove 'Wonder Man S01E02 ...' tags=["MinSeedsNotMet"]
apply 'Wonder Man S01E02 ...' group=IPT
delete '[SubsPlease] ...' group=SubsPlease (limit reached)
==================== Summary ====================
Torrents inspected : 412
Auto-management enabled : 12
...
qBittorrent compatibility
- Pass
shareLimitAction=DefaulttosetShareLimitsfor qBittorrent 5.x (Web API ≥ 2.11) compatibility. - Accept no-content responses from
auth/login.
Internal / packaging
- Split reusable application logic into a library crate.
- Pinned Rust toolchain to 1.95.
- Updated
reqwestto 0.13. - New CI workflow for dependency auditing.
- Hardened Docker build (multi-stage, non-root user, dependency caching).
Breaking changes
This release is a major revamp from v0.2.x. Existing configs will need updating — see the rewritten README and config/example_config.yml. The JSON schema at config/config_schema.json is auto-written on first start.