Skip to content

v1.0.0

Latest

Choose a tag to compare

@Frazzer951 Frazzer951 released this 09 May 03:55
· 0 commits to qbit-manage-core since this release
7871822

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_tags list.
  • Tracker tags — tags torrents based on tracker URL substring match. Multiple patterns can be combined with |.
  • Tracker error tag — applies a configurable issue tag (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_seeds and min_seeding_time protection (limits are temporarily cleared and a MinSeedsNotMet / MinSeedTimeNotReached tag is added until thresholds are met). Optional cleanup flag 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 and grep.
  • [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=Default to setShareLimits for 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 reqwest to 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.