Deivid Soto
eaf9d9d1c9
chore(release): add changelog generation and release automation
2026-04-06 10:16:01 +02:00
Deivid Soto
aa6acbabc9
feat(stream): add NAT-PMP port mapping for remote downloads
...
Replace anacrolix/upnp with huin/goupnp + custom NAT-PMP (RFC 6886)
implementation. NAT-PMP is tried first (faster, more compatible with
TP-Link routers), with UPnP-IGD SOAP as fallback. Gateway detection
reads /proc/net/route for accuracy. Includes unit tests with mock
NAT-PMP server and permanent e2e tests (build tag manual).
2026-04-06 10:09:07 +02:00
Deivid Soto
819c727bf5
feat(organize): use server metadata for file organization and subtitle handling
2026-04-05 23:36:01 +02:00
Deivid Soto
48e4fb9f7b
fix(lint): remove unused newStubCmd function
Release / release (push) Failing after 0s
Release / docker (push) Has been skipped
Release / virustotal (push) Failing after 0s
2026-04-01 12:29:05 +02:00
Deivid Soto
4d35e197f0
feat(cli): add login command and refactor shared helpers
2026-04-01 12:20:51 +02:00
Deivid Soto
0dafeaa70d
feat(stream): report watch progress to API via HTTP Range tracking
...
Track the highest byte offset served by the stream server to estimate
playback progress (0-100%). A WatchReporter goroutine sends progress
to POST /api/internal/agent/watch-progress every 10s during streaming.
- Add maxByteOffset + totalFileSize to StreamServer for Range tracking
- Add FileSize() to fileProvider interface (all 3 providers)
- New WatchReporter: periodic progress reporter tied to daemon context
- New WatchProgressUpdate type with optional progress/position/duration
- Wire reporter into all 3 stream paths (task stream, disk stream, active download stream)
2026-04-01 12:16:45 +02:00
Deivid Soto
932312fc56
chore(cli): remove moreseed stub command
2026-03-31 23:12:07 +02:00
Deivid Soto
ab3b393c22
chore(cli): remove redundant stub commands (monitor, open, add, compare)
2026-03-31 23:03:08 +02:00
Deivid Soto
d0dbfc3d12
fix(ci): fix lint errors and pin CI to Go 1.25
...
- Run gofmt on all files
- Export SetupUPnP to fix unused lint error
- Remove Go 1.26 from CI matrix (only test with 1.25)
2026-03-31 22:15:12 +02:00
Deivid Soto
3e0f3a5a64
feat(cli): upgrade command, rich status, and version cache
...
Release / release (push) Failing after 0s
Release / docker (push) Has been skipped
Release / virustotal (push) Failing after 0s
- Replace `upgrade` stub with real command (alias for `self-update`)
- Also register `update` as alias: `unarr update` works too
- Rewrite `status` to show full config, disk usage, daemon state, and
update availability with colored sections
- Add version check cache (1h TTL) so `status` is instant on repeat runs
- Guard against division by zero on empty filesystems
- Guard against negative durations from clock skew
- Guard against stale PID via heartbeat recency check (2 min)
- Add comprehensive test coverage across agent, engine, upgrade, usenet,
arr, library, mediaserver, and UI packages
- Improve Makefile coverage target to exclude cmd/ glue code
- Fix stream handler resource cleanup and ffprobe error handling
2026-03-31 22:05:43 +02:00
Deivid Soto
01d62ffa13
fix(progress): always report status transitions and poll for control signals
2026-03-31 16:55:50 +02:00
Deivid Soto
763e267bf8
chore(deps): bump Alpine 3.21→3.22, update CI actions and linter
...
Release / release (push) Failing after 0s
Release / docker (push) Has been skipped
Release / virustotal (push) Failing after 0s
- Dockerfile: alpine 3.21 → 3.22 (fewer CVEs per Docker Scout)
- release.yml: actions/checkout v4→v6, setup-go v5→v6, setup-buildx v3→v4
- ci.yml: golangci-lint v2.11.3 → v2.11.4
- DOCKERHUB.md: update Alpine version reference
2026-03-31 11:39:45 +02:00
Deivid Soto
f15eefc0ff
ci(docker): remove dockerhub-description sync step
2026-03-31 11:30:40 +02:00
Deivid Soto
e4f45332ca
ci(docker): add Docker Hub description sync and DOCKERHUB.md
Release / release (push) Failing after 1s
Release / docker (push) Has been skipped
Release / virustotal (push) Failing after 0s
2026-03-31 10:24:14 +02:00
Deivid Soto
af08073aa8
Merge remote-tracking branch 'origin/main'
2026-03-31 10:21:16 +02:00
Deivid Soto
3e60a2a056
fix(docker): upgrade alpine packages to patch CVE-2025-60876 and CVE-2026-27171
2026-03-31 10:20:30 +02:00
Deivid Soto
6d7c5d9174
Merge pull request #12 from torrentclaw/dependabot/github_actions/docker/metadata-action-6
...
ci(deps): bump docker/metadata-action from 5 to 6
2026-03-31 10:10:37 +02:00
Deivid Soto
b493456b92
Merge pull request #11 from torrentclaw/dependabot/github_actions/docker/setup-qemu-action-4
...
ci(deps): bump docker/setup-qemu-action from 3 to 4
2026-03-31 10:10:31 +02:00
Deivid Soto
125208e53b
Merge pull request #10 from torrentclaw/dependabot/github_actions/docker/login-action-4
...
ci(deps): bump docker/login-action from 3 to 4
2026-03-31 10:10:25 +02:00
Deivid Soto
a184937287
Merge pull request #9 from torrentclaw/dependabot/github_actions/docker/build-push-action-7
...
ci(deps): bump docker/build-push-action from 6 to 7
2026-03-31 10:10:14 +02:00
Deivid Soto
b8bc4bcca5
Merge pull request #13 from torrentclaw/dependabot/github_actions/codecov/codecov-action-6
...
ci(deps): bump codecov/codecov-action from 5 to 6
2026-03-31 09:49:25 +02:00
dependabot[bot]
cf64d41109
ci(deps): bump codecov/codecov-action from 5 to 6
...
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action ) from 5 to 6.
- [Release notes](https://github.com/codecov/codecov-action/releases )
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md )
- [Commits](https://github.com/codecov/codecov-action/compare/v5...v6 )
---
updated-dependencies:
- dependency-name: codecov/codecov-action
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-03-30 23:58:17 +00:00
dependabot[bot]
23d283587d
ci(deps): bump docker/metadata-action from 5 to 6
...
Bumps [docker/metadata-action](https://github.com/docker/metadata-action ) from 5 to 6.
- [Release notes](https://github.com/docker/metadata-action/releases )
- [Commits](https://github.com/docker/metadata-action/compare/v5...v6 )
---
updated-dependencies:
- dependency-name: docker/metadata-action
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-03-30 23:58:14 +00:00
dependabot[bot]
085dfb0520
ci(deps): bump docker/setup-qemu-action from 3 to 4
...
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action ) from 3 to 4.
- [Release notes](https://github.com/docker/setup-qemu-action/releases )
- [Commits](https://github.com/docker/setup-qemu-action/compare/v3...v4 )
---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
dependency-version: '4'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-03-30 23:58:11 +00:00
dependabot[bot]
a23d2ff336
ci(deps): bump docker/login-action from 3 to 4
...
Bumps [docker/login-action](https://github.com/docker/login-action ) from 3 to 4.
- [Release notes](https://github.com/docker/login-action/releases )
- [Commits](https://github.com/docker/login-action/compare/v3...v4 )
---
updated-dependencies:
- dependency-name: docker/login-action
dependency-version: '4'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-03-30 23:58:08 +00:00
dependabot[bot]
94be50755e
ci(deps): bump docker/build-push-action from 6 to 7
...
Bumps [docker/build-push-action](https://github.com/docker/build-push-action ) from 6 to 7.
- [Release notes](https://github.com/docker/build-push-action/releases )
- [Commits](https://github.com/docker/build-push-action/compare/v6...v7 )
---
updated-dependencies:
- dependency-name: docker/build-push-action
dependency-version: '7'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-03-30 23:58:05 +00:00
Deivid Soto
aed5f0475d
fix(lint): use default:none to disable errcheck, fix all gofmt and exhaustive
2026-03-31 00:29:16 +02:00
Deivid Soto
4426219f35
fix(lint): disable errcheck, tune gosec/exclusions for codebase state
2026-03-31 00:21:17 +02:00
Deivid Soto
be6eef1195
fix(lint): configure linters for codebase maturity, fix gofmt and ineffassign
2026-03-31 00:17:19 +02:00
Deivid Soto
c0fd8d3818
fix(lint): exclude common fire-and-forget patterns from errcheck
2026-03-30 23:34:36 +02:00
Deivid Soto
104820f4fe
fix(lint): resolve errcheck and bodyclose warnings for golangci-lint v2
2026-03-30 23:31:06 +02:00
Deivid Soto
64d31bf4ed
fix(ci): upgrade golangci-lint to v2.11.3 for Go 1.25 support
2026-03-30 23:27:26 +02:00
Deivid Soto
efa4562acd
refactor: migrate lint config to v2, remove daemon auto-upgrade, add trust badges
Release / release (push) Failing after 1s
Release / docker (push) Has been skipped
Release / virustotal (push) Failing after 0s
2026-03-30 23:24:16 +02:00
Deivid Soto
a13104bdb7
fix(ci): remove go-client checkout steps
...
Release / release (push) Failing after 1s
Release / docker (push) Has been skipped
Release / virustotal (push) Failing after 0s
The go-client dependency is resolved from the Go module proxy (no
replace directive in go.mod). The checkout steps were leftover from
a local replace setup and fail on actions/checkout@v6 which no
longer allows paths outside the workspace.
2026-03-30 14:49:32 +02:00
Deivid Soto
94b40014cc
fix(release): disable homebrew tap (needs PAT, not GITHUB_TOKEN)
Release / release (push) Failing after 1s
Release / docker (push) Has been skipped
Release / virustotal (push) Failing after 0s
2026-03-30 14:38:36 +02:00
Deivid Soto
7c82686f24
fix(ci): fix virustotal job condition syntax
2026-03-30 14:32:15 +02:00
Deivid Soto
e715e53f25
fix(docker): simplify Dockerfile for CI builds (no local go-client)
2026-03-30 14:30:20 +02:00
Deivid Soto
1dd6e8e972
ci(release): add Docker Hub publish and VirusTotal scan jobs
...
Docker job builds multi-arch images (amd64/arm64) and pushes to
DockerHub on each tagged release. VirusTotal job scans all release
artifacts and appends results table to release notes.
2026-03-30 14:30:00 +02:00
Deivid Soto
b00e7fbf0e
feat(init): add 60s countdown, skip key, and cancel detection to browser auth
2026-03-30 14:07:57 +02:00
Deivid Soto
7a655b6e86
docs: add beta notice, fix install URLs to get.torrentclaw.com
2026-03-30 13:34:20 +02:00
Deivid Soto
f9f28214a6
chore: re-enable homebrew tap in goreleaser
2026-03-30 13:24:15 +02:00
Deivid Soto
48f2c945c8
fix(release): disable homebrew tap until repo is created
Release / release (push) Failing after 25s
2026-03-30 13:17:37 +02:00
Deivid Soto
16039a88a8
fix(build): unused variable in Windows process check
2026-03-30 13:11:55 +02:00
Deivid Soto
5a7449b9e6
chore: rename module from torrentclaw-cli to unarr
...
- Rename Go module path github.com/torrentclaw/torrentclaw-cli → github.com/torrentclaw/unarr
- Update all imports, ldflags, scripts, docs, and Docker config
- Add GitHub Actions release workflow (goreleaser on tag push)
2026-03-30 13:06:07 +02:00
Deivid Soto
9cc806d11f
build: remove UPX compression (antivirus false positives, startup penalty)
2026-03-30 09:25:08 +02:00
Deivid Soto
61b44fe86f
feat(stream): UPnP port forwarding for remote video playback
...
Release / GoReleaser (push) Failing after 1s
- Add UPnP discovery and automatic port mapping (like Plex Remote Access)
- Stream server binds to 0.0.0.0 and reports public IP via UPnP
- Fallback chain: UPnP public IP → Tailscale IP → LAN IP
- Clean up port mapping on shutdown
- Bump version to 0.3.0-dev
2026-03-29 23:55:10 +02:00
Deivid Soto
bb791a6e5f
build: add -s -w -trimpath to Makefile, add build-small target with UPX
2026-03-29 23:44:14 +02:00
Deivid Soto
d0f2abcd74
refactor: extract BuildSyncItems to library package, remove duplication
2026-03-29 20:44:33 +02:00
Deivid Soto
60176fadc2
fix: force-start tasks bypass HasCapacity check in dispatch loop
2026-03-29 20:33:51 +02:00
Deivid Soto
3badde606e
fix: add panic recovery to auto-scan, cap DHT nodes at 200
2026-03-29 20:32:08 +02:00