unarr/internal/config
Deivid Soto 132c88b3f0 feat(seeding): wire seed ratio/time lifecycle into the torrent daemon
SeedRatio/SeedTime were declared on TorrentConfig but never consumed, and
SeedEnabled was hardcoded false in both constructors — the daemon never
seeded, and if forced it seeded forever.

- config: [downloads] seed_enabled/seed_ratio/seed_time (opt-in, off by default)
- daemon: parse seed_time + wire all three; startup log per target shape
- engine: seedTargetReached() (pure) + seedAndDrop() background monitor on a
  downloader-scoped seedCtx (not the task ctx, which dies when Download returns);
  drops the torrent on ratio (uploaded/size) OR time, whichever first; no target
  = seed until shutdown. Configurable check interval (tests lower it).
- fix: cleanup() now always drops — previously leaked the handle on error paths
  when seeding was enabled.
- refactor: dropTracked() helper shared by cleanup + post-seeding drop.

Tests: TestSeedTargetReached (9 cases) + ctx/no-target branches + loopback
swarm smoke (-tags smoke). Roadmap hueco closed.
2026-06-01 10:30:39 +02:00
..
config.go feat(seeding): wire seed ratio/time lifecycle into the torrent daemon 2026-06-01 10:30:39 +02:00
config_test.go feat(seeding): wire seed ratio/time lifecycle into the torrent daemon 2026-06-01 10:30:39 +02:00
config_validate_test.go feat: initial commit — unarr CLI 2026-03-28 11:29:42 +01:00
paths.go feat: initial commit — unarr CLI 2026-03-28 11:29:42 +01:00
paths_test.go fix(lint): exclude common fire-and-forget patterns from errcheck 2026-03-30 23:34:36 +02:00