v0.3.0
Highlights
- Soft per-tracker limits with borrowing + smoothing (Phase 3).
- New admin endpoints: preview next cycle, reset smoothing, reset limits.
- Security: single-password qBittorrent auth, no password logs.
- Docker: use GHCR image by default; simpler Compose with
APP_PORT, noversion:key.
Images
- GHCR:
ghcr.io/mrinvincible29/qguardarr:latest - GHCR (pinned):
ghcr.io/mrinvincible29/qguardarr:v0.3.0 - Edge (latest commit):
ghcr.io/mrinvincible29/qguardarr:edge
Added
- Phase 3 “soft” strategy with priority-weighted borrowing and EMA smoothing.
- API:
GET /preview/next-cyclefor proposed tracker caps and per‑torrent changes. - API:
POST /smoothing/resetto clear Phase 3 smoothing state. - API:
POST /limits/resetto set touched torrents back to unlimited (supports dry‑run). - Stats: expose current
strategy; addeffective_cap_mbps,borrowed_mbpsper tracker.
Security
- Authenticate to qBittorrent using only configured credentials.
- Remove fallback/default password attempts; redact secrets in logs.
Changed
- Compose: pull from GHCR by default; drop obsolete
version:key; exposeAPP_PORTfor container port/health alignment. - Compose: remove
mem_limit; rely on host/container constraints or user-provided limits. - Logging: centralized setup; ensure log directory exists; avoid file handler permission errors.
Documentation
- Quick Start: run directly from GHCR, download compose and config from repo (no git clone).
- Webhooks: optional but recommended; periodic cycles still manage updates without them. Benefits and examples documented.
.env.example: addAPP_PORT=8089.
Tests
- Unit test: enforce single-password auth and log redaction.
- Docker quick integration tests: passing with Phase 3 and new endpoints.
Upgrade Notes
- Config compatibility: 0.3.0 is backward-compatible; Phase 3 is opt-in via
global.allocation_strategy: soft. - Docker:
- Compose now expects
APP_PORT(defaults 8089). If yourconfig.global.portdiffers, setAPP_PORTin.envto match (e.g.,APP_PORT=8189). version:key removed to silence Compose v2 warnings.mem_limitremoved; if you previously saw OOM kills (exit 137), consider adding your own limits or ensure adequate host memory.
- Compose now expects
- Cross-seed:
- Set
cross_seed.enabled: truein config to enable forwarding; environment variables alone do not enable it.
- Set
Quick Pull
docker pull ghcr.io/mrinvincible29/qguardarr:v0.3.0- In compose, set
image: ghcr.io/mrinvincible29/qguardarr:v0.3.0to pin.
Full Changelog