Skip to content

v2.1.1

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 26 Oct 13:10
· 19 commits to main since this release

v2.1.1

修三个用户实际撞上的问题:改设置后页面总跳回顶部、开启开机自启会立刻多出一个进程、
解析链接一直在报「所有重试都失败」。顺带修好进度条最后一段经常少报一截的问题。

界面

  • 改设置不再跳回页面顶部:改任何设置都会重画整个设置页,而重画会把滚动位置一起
    冲掉——用户改个设置就被弹回顶部。现在重画前记下位置、重画后放回去
  • 任务被删掉导致列表重画时,设置页的滚动位置同样不再丢

macOS

  • 开启开机自启不再立刻多出一个 SDM 进程:之前写完 plist 还顺手跑了一次
    launchctl load,而 load 不只是「注册」,它当场就把任务跑起来了。自启的意思是
    「下次登录时启动」,不是「现在启动」。现在只写 plist,登录时 launchd 自己会扫

引擎

  • 磁力链接这类地址立刻失败并说清楚:磁力链接(magnet: 开头)以前会被当成网络
    错误重试 5 次,最后报一句「所有重试都失败」——跟真实原因完全对不上。现在直接告诉你
    「这是磁力链接(BT),SDM 只下载 HTTP(S) 的普通文件,不支持 BT/磁力」
  • 不可重试的失败不再重试:404(文件不存在)、416(服务器不认这个 Range)这类重试
    多少次结果都一样,现在一次就报错,不再白等 7.5 秒
  • 两处错误分类对齐:新建任务对话框和任务列表现在用同一份分类。磁力链接在两边都
    归到「客户端错误」,不再在任务列表里显示成「网络连接中断,将自动重试」还标着可
    重试;404 归到「文件不存在」;429(被限流)归到「可重试」
  • 进度条最后一段不再少报:下载快结束时进度会停在 98.97% 再也不动(2 MB 的文件
    最终报成 2031616,正好少一个 64 KB 块)。根因是进度合并窗口到期时发的是上一个
    窗口攒的旧值,把最后那次上报直接抹掉了
  • 续传时进度不再倒退一次:续传的汇总基数没算盘上已有的字节,第一次上报会比实际
    少,进度条会往回跳一下,紧接着算出来的速度也是个巨大的假值

已知限制

  • 仍不支持 BT / 磁力(要做磁力得整个塞一个 BT 客户端进来,不在当前范围内);现在遇到
    这类地址会立刻说清楚原因,而不是重试到天荒地老
  • 本版仍未经过大规模手测,按惯例发 Pre-release

v2.1.0

这一版按 DeepSeek 规格做了整轮补齐,重点在引擎和错误处理——这两块是真正
的壁垒,其余是体验放大器。

引擎

  • 动态分段:分片布局在下载过程中会长大,不再是开跑前一次性切死。从 2 条
    连接起步,有实打实的进度才逐级放开到设定上限;单个分片跑到一半会被拆成两半,
    拆出来的另一半另开连接继续拉
  • 无 Range 自动回退:服务器对 Range 请求返回 200 而不是 206 时,自动退化成
    单流下载,不再把整份文件当成分片数据写坏
  • 续传校验:会话文件里记了 ETag / Last-Modified / Content-Length,资源变了
    就不再接着旧进度写,任务转成「资源已变更」而不是悄悄写出一个坏文件
  • 会话落盘:分片布局写成 <文件名>.sdm.session.json,崩溃或被杀之后能按原
    布局接着下
  • 进度报增量:文件级进度是所有分片增量之和。修好了进度虚高 2.5 倍的 bug
    (2 MB 的文件一度报成 5 MB)
  • 代理:支持 http / https 原生代理,SOCKS4 / SOCKS5 走 httpx-socks
  • 校验和:可选 md5 / sha1 / sha256,完成后自动算出校验值
  • 完成后行为:打开文件、打开文件夹、跑脚本、休眠,可按任务设置
  • 磁盘空间预检:开跑前检查剩余空间,不够就直接失败,不下到一半才发现
  • 名字冲突:默认保留两者(foo (1).zip),覆盖要走「移到废纸篓」,不会
    静默删掉用户已有文件
  • 任务队列:同时活跃的任务数有上限(默认 5),超出的排队,可置顶置底
  • 重试与改选项:失败任务可重试,代理 / 校验算法 / 完成后行为可以中途改

错误处理

  • 12 类结构化错误分类:网络、磁盘、权限、空间不足、认证、链接过期、服务器、
    限流、协议、不支持、用户取消、未知
  • 每类错误都带能不能自动重试和用户该做什么的中文说明
  • HTTP 状态码自动归类,403 / 410 / 451 归到「链接失效」,任务转「等待新链接」
  • 尊重 Retry-After,重试用指数退避 + 抖动,最多 5 次
  • 错误详情可以复制出来,粘到反馈里能看懂

浏览器接管

  • Native Messaging 宿主:Chrome / Edge / Firefox / Safari 扩展通过原生消息
    把下载派给应用,自动带上页面的 Cookie、User-Agent、Referer
  • 配对令牌:扩展第一次连接要跟应用配对,令牌存在本地,回环 HTTP 通道强制
    校验
  • Chrome / Edge 扩展重写:取消浏览器自带的下载,接管文件名、按分类分目录
  • Firefox 修好:以前把文件名当 URL 发出去,压根下不动
  • Safari 改成纯手动:右键菜单 + 工具栏按钮,不做自动拦截

界面

  • 底部状态栏:全局速度、限速、活跃任务数
  • 分类列 + 列显隐选择器
  • 新建任务对话框重写:多行 URL、保存目录、分类、代理、请求头键值行、分块数、
    开始时机(立即 / 排队 / 定时),带解析状态和重新解析
  • 详情面板:分片可视化 + 最近 60 秒的速度曲线
  • 浅色 / 深色主题切换,跟随系统
  • 设置里补齐 7 个新键(并发任务数、主题、代理、配对令牌、初始连接数、分片上限等)

macOS / Windows 系统集成

  • 菜单栏状态行:实时显示「下载中 N 个 · 速度」,1.5 秒刷一次;带暂停全部、
    继续全部、剪贴板监控勾选
  • Dock 图标显示整体下载进度
  • AppleScript 词典:可在 Script Editor 里 add download、pause all downloads、
    resume all downloads、get download list
  • Windows 托盘图标 + 与 macOS 一致的菜单
  • Windows URL Scheme 注册表项

打包

  • 新增 sdmd-native-host 产物,浏览器按清单拉起它
  • macOS 首次启动自动装原生消息宿主清单,Windows 解包后自动装
  • AppleScript 词典打进 .app,Info.plist 里写 OSAScriptingDefinition

已知限制

  • Safari 只做手动接管,不做自动拦截
  • 不支持 BT / 磁力
  • 没有 App Intents 原生集成
  • SOCKS 代理需要额外装 httpx-socks
  • 本版仍未经过大规模手测,按惯例发 Pre-release

v2.0.6

  • 下载列表可以按文件名、大小、速度、状态排序,未知大小的任务排在最后
  • 速度显示改成平滑曲线,不再忽快忽慢;任务结束或暂停时速度归零
  • 下载完成后自动写进历史记录
  • 日志每天自动清理一次,改动日志设置时也会立即清理
  • 设置里可以直接打开 macOS 的 Console.app 看日志
  • 下载完成和失败时发系统通知;应用在前台时也弹横幅;点通知会把主窗口拉到前面
  • 站点规则对探测请求也生效,需要 Referer 或特定 UA 的站点不再一启动就失败
  • 命令行和后台守护支持用环境变量指定 socket 路径
  • 后台守护必须由系统服务启动,手动运行会给出提示而不是挂在前台
  • 剪贴板候选弹窗可以随时停止监听;已经在下载队列里的链接不再重复提示
  • 关闭自动分类后,所有下载落进下载目录根目录
  • 关掉主窗口后应用继续在菜单栏待着,可从菜单栏唤回
  • 关闭窗口时按设置隐藏 Dock 图标,从菜单栏唤回时恢复
  • 启动时自动同步开机自启状态
  • 带宽限制输入框的单位改成 KB/s,之前填的数值实际是按字节算的
  • 支持 superdownloadmanager:// 链接唤起下载

v2.0.5

  • 修好分片计数:详情页的「已完成分片 / 总片数」以前一直是 0/0,现在正确显示
  • 最后一个分片完成后状态不再停留在未完成
  • 已完成的任务也能查看分片明细
  • 修好 socket 路径过长时 daemon 起不来:路径超过系统上限自动改用短路径
  • 打包时校验应用图标,没打进 bundle 直接让构建失败

v2.0.4

  • 详情页分片表可以展开看全部,默认仍只列前 64 个
  • 换任务时自动收起

v2.0.3

  • 修好应用图标:之前打包没传图标参数,访达和 Dock 里显示的是打包工具的默认图标
  • macOS 菜单栏常驻图标,菜单项跟桌面版一致:打开主窗口、加 URL、在访达显示下载目录、关于、设置、退出
  • Windows 也用同一个图标

v2.0.2

  • 一个包就够:命令行和后台守护都装在 app 里,首次启动自动装好
  • macOS 把 sdm 软链到 PATH 并注册开机自启
  • Windows 首次运行时释放命令行和守护进程,加进 PATH 并注册计划任务
  • macOS DMG 生成(build.py --mac)

v2.0.1

Python 重写版。跨 macOS、Windows、Linux,界面换成液态玻璃。

  • 引擎改用 httpx 真流式传输,字节到达即落盘
  • 分片下载默认 32 段,上限 128
  • 断点续传按已落盘字节继续
  • 链接过期(403/410/451)时任务转「等待新链接」,换新 URL 后从已完成分段续传
  • 全局限速、单任务限速、时间段限速规则
  • 自动文件分类,无扩展名文件按 magic byte 识别
  • 站点规则支持 Referer、User-Agent、Cookie、Basic Auth
  • 下载历史、计划任务、站点规则、日志、通知
  • 剪贴板候选确认、浏览器扩展派单
  • sdm 命令行,每个命令返回 JSON
  • 后台 daemon,开机自启
  • 窗口自由缩放,布局重排不裁切
  • 详情页显示真实分片状态
  • macOS DMG 生成(build.py --mac)

Windows 22H2 与 macOS 12+。