Deivid Soto
64734cad1f
feat(agent): send stream port and IPs in register request
...
Include StreamPort, LanIP, and TailscaleIP in RegisterRequest so the
server knows the agent's stream endpoints from the moment it registers,
not just after the first heartbeat. Align HeartbeatRequest field order
with RegisterRequest for consistency.
2026-04-07 23:28:41 +02:00
Deivid Soto
5994a30447
feat(stream): persistent stream server with file swapping
2026-04-07 19:08:37 +02:00
Deivid Soto
a9179dc758
feat(daemon): add on-demand library scan via heartbeat and WebSocket
2026-04-07 11:36:42 +02:00
Deivid Soto
6f81a2f3ea
fix(agent): add retry with backoff and WebSocket connect for daemon registration
2026-04-06 17:26:32 +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
be6eef1195
fix(lint): configure linters for codebase maturity, fix gofmt and ineffassign
2026-03-31 00:17:19 +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
35e5298f23
feat: add clean command to remove temp files, logs, and cached data
...
Adds `unarr clean` with interactive confirmation, --dry-run, --yes,
and --all flags. Safely skips recent usenet resume files (<7 days) to
preserve download progress. Includes platform-specific PID detection
(Unix signal 0 / Windows heartbeat heuristic), CleanableBytes callback
for future heartbeat reporting, and uses shared ui.FormatBytes.
2026-03-29 11:04:51 +02:00
Deivid Soto
197e33956a
feat: improve daemon resilience, streaming, and usenet downloads
...
- Add daemon state persistence and stale resume file cleanup
- Add TriggerPoll for WebSocket resume actions
- Improve stream server with graceful shutdown and connection tracking
- Add desktop notifications for download completion
- Add media file organization with Movies/TV Shows detection
- Improve usenet downloader with progress tracking and resume support
- Add self-update package with GitHub release verification
- Downgrade tablewriter to v0.0.5 (v1.x API breaking change)
2026-03-28 21:36:12 +01:00
Deivid Soto
5f337eebd7
feat(agent): add WebSocket transport with HTTP fallback
...
Add Transport interface abstraction supporting WebSocket (via CF
Durable Objects) and HTTP (direct to origin) with automatic failover.
- Transport interface: Register, SendHeartbeat, SendProgress, Events()
- HTTPTransport: thin adapter over existing Client
- WSTransport: gorilla/websocket with auth handshake, readLoop, reconnect
- HybridTransport: tries WS first, falls back to HTTP, reconnects in bg
- Daemon refactored to always use Transport (no dual-path forks)
- ProgressReporter accepts StatusReporter interface
- deriveWSURL skips localhost/dev (returns "" → HTTP-only)
- API key passed in WS query param for connection auth
- Fixed: reconnectOnce race (mutex+bool), authDone double-close (sync.Once)
- Fixed: forwardWSEvents goroutine leak (select with stop signal)
- 20 transport tests + 2 E2E tests (full lifecycle, hybrid failover)
2026-03-28 18:55:29 +01:00
Deivid Soto
29cf0a0126
feat: initial commit — unarr CLI
...
Search, inspect, stream, and download torrents from the terminal.
Replaces the entire *arr stack with a single binary.
2026-03-28 11:29:42 +01:00