Gopeed's last release is aging and its SChannel-linked Windows build chokes on modern CDN TLS handshakes (we hit SEC_I_MESSAGE_FRAGMENT on twimg.com). Replace it with aria2 — same short flags (-x/-s/-k carry over verbatim), stricter arg handling, and well-trodden cross-platform builds. Binaries are vendored in-tree at extra/aria2/<os>/<arch>/ rather than pulled from a single GitHub release, because aria2 static builds for Linux / macOS / Windows come from different upstream repos. To keep the deps pipeline unified: - `scripts/download-deps.ts` grows a "source": "local" branch that copies from `extra/<tool>/<os>/<arch>/` into `.deps/<os>-<arch>/` instead of fetching from GitHub. Resulting layout matches the rest of the tools, so binaryResolver.ts needs no changes. - `scripts/deps-versions.json`: `gopeed` entry removed, `aria2` entry added with source:"local" + path:"extra/aria2". - `apps/core/internal/core/types.go`: BinaryNames[TypeDirect] `"gopeed"` → `"aria2c"`. - `apps/core/internal/core/schema/loader.go`: direct schema's Args map to aria2's flags (-d / -o, plus --console-log-level=notice / --summary-interval=1 / --allow-overwrite=true / --auto-file-renaming=false for parseable output and predictable rerun behaviour). ConsoleReg regexes updated to aria2's summary line format (e.g. "DL:512KiB" for speed, "(83%)" for percent). `--check-certificate=false` tacked on as a workaround for the SChannel handshake issue on the bundled 1.19.0 Windows build — proper fix is upgrading the vendored binary to a build that links against OpenSSL (e.g. 1.37.0), comment calls that out. - `apps/core/.env`, `Dockerfile`, `apps/electron/scripts/build.ts`, `apps/core/README.md`: gopeed → aria2c / aria2 references. No DB migration: existing `type: "direct"` rows keep working, the underlying binary just swaps. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
aria2
Pre-compiled aria2c static binaries bundled with MediaGo.
| Field | Value |
|---|---|
| Version | 1.19.0 |
| Upstream | https://github.com/aria2/aria2 |
| License | GPL-2.0-or-later (SPDX: GPL-2.0-or-later) |
| Source | https://github.com/aria2/aria2/releases/tag/release-1.19.0 |
| Role | Backs DownloadType: "direct" (replaces gopeed from v3.5.0-beta.2 onward) |
Layout
extra/aria2/
├── darwin/arm64/aria2c
├── darwin/x64/aria2c
├── linux/arm64/aria2c
├── linux/x64/aria2c
├── win32/arm64/aria2c.exe
└── win32/x64/aria2c.exe
The wrapping deps pipeline (scripts/download-deps.ts) copies the correct
per-platform binary into .deps/<os>-<arch>/aria2c[.exe] on pnpm deps:download,
so the Go Core's BinaryNames[TypeDirect] = "aria2c" lookup finds it at the
same location that third-party tools (ffmpeg, N_m3u8DL-RE, BBDown, yt-dlp) land.
License notice
aria2 is licensed under the GNU General Public License, version 2 or any
later version (GPL-2.0-or-later). The MediaGo project itself is MIT-licensed;
aria2 is redistributed here as an aggregation — MediaGo invokes aria2c
as a separate subprocess, not as a linked library, which keeps the GPL
boundary at the binary.
The full GPL text ships with each binary (run aria2c --version to see the
copyright notice) and is available at:
https://github.com/aria2/aria2/blob/master/COPYING
Written offer (GPL-2.0 §3(b))
For any version of aria2 bundled here, the corresponding machine-readable source code is publicly available at the upstream GitHub repository linked above, at no charge. No further steps required from users.
How to refresh these binaries
- Fetch the new version's static builds from a trusted static-build distributor (the originals bundled here are from the aria2 GitHub releases on Windows; other platforms use static builds).
- Replace each
extra/aria2/<os>/<arch>/aria2c[.exe]file. - Update the Version and Source rows above.
- Run
pnpm deps:downloadlocally to refresh.deps/and smoke-test a direct download.