Skip to content

v2.1.0

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 25 Oct 15:48
· 27 commits to main since this release

v2.1.0

引擎

  • 动态分段:分片布局在下载过程中会长大,不再是开跑前一次性切死。从 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+。