github GopeedLab/gopeed v2.0.0-beta.4
v2.0.0-beta.4 🌈

pre-release4 hours ago
🪟 Windows EXE amd64 📥
arm64 📥
Portable amd64 📥
arm64 📥
🍎 MacOS DMG universal 📥
amd64 📥
arm64 📥
🐧 Linux Flathub amd64 📥
SNAP amd64 📥
DEB amd64 📥
arm64 📥
AppImage amd64 📥
arm64 📥
🤖 Android APK universal 📥
armeabi-v7a 📥
arm64-v8a 📥
x86_64 📥
📱 iOS IPA universal 📥
🐳 Docker - universal 📥
💾 Qnap QPKG amd64 📥
arm64 📥
🌐 Web Windows amd64 📥
arm64 📥
386 📥
MacOS amd64 📥
arm64 📥
Linux amd64 📥
arm64 📥
386 📥

Release notes

This update adds FTP downloads, task groups and automatic categorization, fixes Cookie forwarding and other issues, and improves download performance and stability.

🆕 Features

  • feat(extension): add request mutation methods on task.meta.req for task start and error handlers @monkeyWie (#1538)
  • feat(task): record task completion time and display it in task details @monkeyWie (#1536)
  • feat(ui): check extension updates directly against GitHub, unify the update entry point, and display local extension documentation @monkeyWie (#1535)
  • feat(download): add HTTP checksum verification, an MCP speed/progress tool, pause webhooks, and CLI checksum flags @Ashish6298 (#1542)
  • feat(bt): add DHT and PEX switches to BitTorrent settings; changes take effect after restarting the app @junkerderprovinz (#1555)
  • feat(http): use extension-provided file sizes as estimates for downloads with unknown lengths @monkeyWie (#1599)
  • feat(download): optionally organize downloads into category folders by file extension, with editable extension rules @wufeng5702 (#1572)
  • feat(protocol): add FTP, FTPS and FTPES downloads with directory downloads, segmented transfers and resume support @silasmariusz (#1569)
  • feat(tasks): group extension folder downloads into one task card with combined progress and group actions; batch creation now returns {taskIds, parentId?} @wufeng5702 (#1594)
  • feat(ui): show Web task creation in a modal, unify task creation across platforms, and make the app mark a home action @monkeyWie (#1633)

🐛 Bug Fixes

  • fix(http): use the complete resource size from Content-Range for HTTP 206 responses and validate partial response ranges @learnr-reader (#1545)
  • fix(ui): smooth task progress bar updates while respecting the system animation preference @monkeyWie (#1532)
  • fix(settings): use Save as the primary button label in settings form dialogs @wufeng5702 (#1571)
  • fix(extension): preserve Cookie and other authentication headers in extension fetch and XMLHttpRequest calls @monkeyWie (#1581)
  • fix(http): eliminate the unnecessary prefetch wait when resuming restored downloads @pentaoa (#1584)
  • fix(ui): widen the navigation rail for macOS window controls and improve narrow desktop layouts @monkeyWie (#1582)
  • fix(extensions): correctly match magnet URI patterns when selecting extensions @zhzjzz (#1619)
  • fix(web): report actionable server startup errors and exit cleanly instead of panicking @OKAN-SOFTWARE (#1620)
  • fix(mcp): provide explicit schemas for dynamic tool outputs to prevent clients from rejecting the tool list @monkeyWie (#1626)
  • fix(analytics): use Android ID for Android analytics and persist UUID fallbacks when device identifiers are unavailable @monkeyWie (#1624)
  • fix(web): prevent the browser context menu from covering task menus while preserving native text-input menus @zhzjzz (#1627)
  • fix(extension): restore deprecated request APIs for compatibility with existing extensions throughout 2.x @monkeyWie (#1628)
  • fix(bt): prevent crashes and data races when the shared BitTorrent client is created and closed concurrently @junkerderprovinz (#1587)
  • fix(macos): release Flutter engines and subscriptions when child windows close to prevent memory accumulation @monkeyWie (#1639)
  • fix(ui): make downloaded-file deletion an explicit switch, keep files by default for new or missing settings, and preserve saved preferences @KaemiaDeveloper (#1638)

🔧 Performance Improvements

  • perf(extensions): load store summaries and installed extensions in parallel, check updates in the background, and cache list/detail requests @monkeyWie (#1583)
  • perf(http): use 64 KiB connection read buffers to reduce HTTP download CPU overhead @Arpit-Khandelwal (#1588)
  • perf(http): replace per-read goroutines with a reusable timeout timer and prevent timed-out reads from writing into reused buffers @Arpit-Khandelwal (#1597)

🧰 Maintenance

  • refactor(ios): simplify continued processing startup and share task-event decoding with Live Activities @UltraGeek0102 (#1547)
  • refactor(downloader): make resource resolution request-only; download options must now be supplied when creating tasks @monkeyWie (#1595)
  • refactor: remove the proxy API, move Tracker subscriptions to the backend, verify app updates with SHA-256, and improve GitHub mirror fallback; legacy Tracker and mirror settings are not migrated @monkeyWie (#1596)

🧪 Tests

  • test(bt): isolate shared-piece cleanup fixtures from automatic part-file promotion to stabilize regression tests @monkeyWie (#1531)

🚀 CI/CD

  • fix(ci): restore Windows ARM builds with scoped MSVC compatibility settings @monkeyWie (#1586)
  • fix(ci): locate Windows AMD64 runtime DLLs through the selected compiler instead of hardcoded Git paths @monkeyWie (#1603)
  • fix(ci): select the first compiler in PATH when locating Windows runtime libraries @monkeyWie (#1604)
  • fix(ci): restore Windows release asset uploads when the build test option is enabled @monkeyWie (#1605)

🌎 Internationalization

更新日志

本次升级新增 FTP 下载、任务组和自动分类支持,修复 Cookie 传递等问题,并提升下载性能与稳定性。

🆕 新功能

  • feat(extension): 支持在任务启动和错误处理事件中通过 task.meta.req 修改请求参数 @monkeyWie (#1538)
  • feat(task): 记录任务完成时间,并在任务详情中显示 @monkeyWie (#1536)
  • feat(ui): 直接从 GitHub 检查扩展更新,统一更新入口,并显示本地扩展文档 @monkeyWie (#1535)
  • feat(download): 新增 HTTP 文件校验、MCP 下载速度与进度工具、暂停 Webhook 事件及命令行校验参数 @Ashish6298 (#1542)
  • feat(bt): 新增 BitTorrent DHT 和 PEX 开关,重启应用后生效 @junkerderprovinz (#1555)
  • feat(http): 对长度未知的下载使用扩展提供的文件大小作为估算值 @monkeyWie (#1599)
  • feat(download): 支持按文件扩展名自动保存到分类目录,并提供可编辑的扩展名规则,默认关闭 @wufeng5702 (#1572)
  • feat(protocol): 新增 FTP、FTPS 和 FTPES 下载,支持目录下载、分段传输和断点续传 @silasmariusz (#1569)
  • feat(tasks): 将扩展文件夹下载聚合为一张任务卡片,统一显示进度并支持分组操作;批量创建接口改为返回 {taskIds, parentId?} @wufeng5702 (#1594)
  • feat(ui): Web 端通过弹窗创建任务,统一各平台创建任务入口,并支持点击应用标识返回首页 @monkeyWie (#1633)

🐛 问题修复

  • fix(http): 从 HTTP 206 响应的 Content-Range 获取完整资源大小,并校验部分响应的范围 @learnr-reader (#1545)
  • fix(ui): 平滑显示任务进度条变化,并遵循系统动画设置 @monkeyWie (#1532)
  • fix(settings): 将设置表单弹窗的主按钮文案统一为“保存” @wufeng5702 (#1571)
  • fix(extension): 保留扩展 fetch 和 XMLHttpRequest 请求中的 Cookie 等认证请求头 @monkeyWie (#1581)
  • fix(http): 消除恢复已保存下载任务时不必要的预读取等待 @pentaoa (#1584)
  • fix(ui): 加宽导航栏以适配 macOS 窗口控制按钮,并优化较窄桌面窗口的布局 @monkeyWie (#1582)
  • fix(extensions): 选择扩展时正确匹配 magnet URI 规则 @zhzjzz (#1619)
  • fix(web): 服务器启动失败时输出明确错误并正常退出,避免 panic 堆栈 @OKAN-SOFTWARE (#1620)
  • fix(mcp): 为工具的动态输出提供明确的 Schema,避免客户端拒绝整个工具列表 @monkeyWie (#1626)
  • fix(analytics): Android 统计改用 Android ID,并在无法获取设备标识时持久化 UUID 备用标识 @monkeyWie (#1624)
  • fix(web): 避免浏览器右键菜单遮挡任务菜单,同时保留文本输入框的原生菜单 @zhzjzz (#1627)
  • fix(extension): 恢复已弃用的请求 API,在 2.x 版本中保持对现有扩展的兼容 @monkeyWie (#1628)
  • fix(bt): 修复共享 BitTorrent 客户端并发创建和关闭时的崩溃与数据竞争 @junkerderprovinz (#1587)
  • fix(macos): 子窗口关闭时释放 Flutter 引擎及订阅,避免内存持续累积 @monkeyWie (#1639)
  • fix(ui): 将删除弹窗开关改为“删除已下载的文件”,新用户或缺少配置时默认保留文件,并沿用已保存的偏好 @KaemiaDeveloper (#1638)

🔧 性能优化

  • perf(extensions): 并行加载扩展商店摘要与已安装扩展,后台检查更新,并缓存列表和详情请求 @monkeyWie (#1583)
  • perf(http): 使用 64 KiB 连接读取缓冲区,降低 HTTP 下载的 CPU 开销 @Arpit-Khandelwal (#1588)
  • perf(http): 使用可复用的超时计时器替代每次读取创建的协程,并避免超时读取继续写入已复用的缓冲区 @Arpit-Khandelwal (#1597)

🧰 维护调整

  • refactor(ios): 简化持续处理任务的启动流程,并与实时活动共用任务事件解析逻辑 @UltraGeek0102 (#1547)
  • refactor(downloader): 资源解析接口改为仅接收请求参数,下载选项需在创建任务时传入 @monkeyWie (#1595)
  • refactor: 移除代理 API,将 Tracker 订阅交由后端管理,为应用更新添加 SHA-256 校验,并改进 GitHub 镜像回退;旧 Tracker 和镜像配置不自动迁移 @monkeyWie (#1596)

🧪 测试

  • test(bt): 将共享分片清理测试与临时分片文件自动转正逻辑隔离,提高回归测试稳定性 @monkeyWie (#1531)

🚀 持续集成与发布

  • fix(ci): 通过限定作用范围的 MSVC 兼容设置恢复 Windows ARM 构建 @monkeyWie (#1586)
  • fix(ci): 通过所选编译器定位 Windows AMD64 运行库 DLL,避免依赖固定的 Git 安装路径 @monkeyWie (#1603)
  • fix(ci): 定位 Windows 运行库时选择 PATH 中的第一个编译器 @monkeyWie (#1604)
  • fix(ci): 恢复启用构建测试选项时向 Release 上传 Windows 安装包的行为 @monkeyWie (#1605)

🌎 国际化

Don't miss a new gopeed release

NewReleases is sending notifications on new releases.