Skip to content

v1.4.0

Latest

Choose a tag to compare

@github-actions github-actions released this 16 Oct 05:35

⬇️ 点击徽章直接下载

Windows
macOS
macOS
Linux
Linux

不知道选哪个?见下方对照表 · 首次使用请留意各平台注意事项


📦 下载对照表

平台 架构 安装包
Windows x64 安装版 .exe(推荐)
Windows x64 便携版 .exe
macOS Apple 芯片(M 系列) .dmg(推荐)
macOS Intel .dmg(推荐)
Linux x64 .AppImage(推荐)
Linux x64 .deb
Linux x64 .rpm
Linux arm64 .AppImage

运行依赖 yt-dlp / ffmpeg 不随安装包分发:启动后会自动识别机器上已安装的版本并复用,
识别不到时在「设置 → 运行依赖」里一键下载即可,无需提前手动安装。

⚠️ 各平台注意事项

  • Windows:安装版会创建开始菜单与桌面快捷方式;便携版解压即用,但不支持自动更新
  • macOS:应用未做代码签名,首次打开需在「系统设置 → 隐私与安全性」中允许;Apple 芯片请勿选 Intel 版
  • Linux:.AppImage 需先 chmod +x;.deb / .rpm 可通过包管理器安装

📝 更新内容

新增

  • 关于页新增官网入口,以及赞助 / 商务合作接洽方式:关于页原来只有 GitHub 与「问题反馈」两个入口,
    想找官网或谈合作只能去翻 README。现在多一个官网入口(下载安装包、看功能介绍),
    并在「支持 DownVid」里列出赞助支持与商务合作(广告位)两个邮箱入口,点开即带好邮件主题。
    官网、README 与关于页用的是同一个地址(shared/app.ts 的 CONTACT_EMAIL),
    新增 tests/app-links.test.ts 与 lint:website 的一致性校验——邮箱写错不会报错,
    只是信寄不到,要等对方放弃才知道
  • 界面支持中英双语:此前界面是 1217 处硬编码中文(29 个文件),海外用户装上就是纯中文界面。
    现在 254 条词条 × zh-CN / en-US,t() 读响应式 ref,切换语言立即重渲染;设置里新增
    「界面语言」(默认「跟随系统」),选择器放在「下载」分区最上面——海外用户第一件事就是找它。
    刻意不引 vue-i18n:只有两种语言、没有复数/日期格式化需求,与「不引 ESLint/Prettier」同一套理由。
    新增 pnpm lint:i18n 并挂进三个 ci-*.yml,拦下四类不会报错的失效:词条缺英文
    (该处永远显示中文)、占位符集合不一致(永远显示 {count})、t() 用了不存在的键
    (界面直接显示 key)、src/ 下新写的硬编码中文
  • 官网下载按钮按系统直链安装包:打开页面即识别系统(Chrome / Edge 还能读到芯片架构),
    主按钮直接指向 releases/latest 里对应的产物直链——点一下就下载,不再跳到 Releases 页面。
    同平台的其他格式(便携版、Intel 版、deb / rpm)在展开菜单里;识别不准或拉取失败一律退回
    Releases 页面,不留死链。平台图标也换成各系统的标准品牌标识
  • 官网按参考 deepseek.com/harness 重做版式:居中 hero + 大预览图、两列卡片网格、
    「安装与运行」代码块(带复制按钮)、居中的社区 CTA、极简页脚;顶栏改成浮动圆角胶囊,
    滚动时钉在顶部并加深底色,且去掉了「功能 / 下载 / FAQ / GitHub」那排导航链接
    (页面一路往下滑),品牌在左、中英切换在右。顶栏有两种形态:贴顶时是通栏细条(原样),
    往下滑超过 12px 才收成浮动圆角胶囊并钉住,滑回顶部自动还原
    ;下载按钮改为分体按钮,
    主按钮直链当前系统的安装包,右侧箭头展开全部平台与格式;「查看源码」补上 GitHub 品牌图标。
    配色仍取自应用本身
  • 官网「能做什么」的卡片改成和桌面端一样能点:平台 / 画质 / 浏览器分组单选(画质会带出
    对应体积)、下载加速可以开始 / 暂停并让进度条走起来、依赖识别逐个检出、「检查更新」用
    真实拉到的最新版本号作答。纯前端演示,不联网改状态
  • 官网 hero 的预览图换成应用主界面的可交互复刻:结构 / 文案 / 配色照 src/components/
    的下载界面组件搬过来,解析视频信息、格式单选、立即下载(任务进右侧队列并跑进度)、
    下载历史 / 关于软件 标签页都能点;默认就停在「已粘贴 + 已解析 + 正在下载」的样子,
    缩略图用原链接的预览图(src/assets/demo-thumb.jpg)。画布按应用窗口的 1100px 宽度设计再
    等比缩放,lint:website 会比对复刻里抄来的 @theme 颜色 token
  • 官网下载量与星标改用 README 同款 shields.io 徽章,数字实时,不再需要发布后手动刷新;
    原先的 scripts/gen-website-stats.mjs(pnpm website:stats)已删除
  • pnpm lint:website 新增校验,拦的是本地看不出来的失效:页面脚本里的仓库坐标、
    下载产物名模板与 electron-builder.json5 的 artifactName 是否一致、脚本拼装文案的
    中英词条是否成对、shields.io 徽章里的仓库坐标是否正确;另加
    tests/website-download.test.ts(36 例),用真实产物列表(含 .blockmap、latest*.yml
    等干扰项)钉住「哪个系统拿哪个包」与菜单分组

修复

  • 依赖探测可能挂住几十秒到几分钟:超时后只杀直接子进程,而候选可能是
    shell 脚本或 PyInstaller 启动器,其孙进程仍持有 stdout 管道,cmd.Run()
    会一直等 I/O。实测一个 sleep 300 的假二进制把 5 秒预算的探测拖成 300 秒;
    用户侧表现是界面卡住、最后报「依赖检测达到时限」。现在用 cmd.WaitDelay
    兜住管道(单元测试里真实复现并回归)
  • 卡死的系统副本会拖垮整次检测:候选执行预算改为按来源区分——
    托管副本 15 秒(官方 macOS 构建首次执行最慢实测 12.4 秒),系统副本 5 秒
    (通常是 0.2 秒的 zipapp)。此前一律 15 秒,候选表里十几个路径时最坏能把
    一次检测拖到几分钟。这个问题由 CI 的 Windows 原生回归抓出
  • 浏览器 Cookie 库读不出来时整个解析直接失败(#53):yt-dlp 会在浏览器目录下挑最新的那个
    Cookies 文件来读,它若是空库、不是 SQLite 或拷贝时损坏,yt-dlp 只打出 sqlite3 的原始异常
    (如 ERROR: no such table: meta)。这类报错此前不算「Cookie 读取失败」,于是不换来源,
    后面的浏览器、快照和「不带 Cookie」一个都轮不到。现在照常换来源:不需要登录的视频直接解析成功,
    该浏览器十分钟内跳过;确实需要登录时给出 Cookie 提示。下载走同一套回退,一并修复。
    四种报错形态都用真实 yt-dlp 复现过

工程

  • README 与官网都加上赞助 / 商务合作入口:README 顶部导航行与正文各放一处,
    官网在「加入开源社区」之后新增独立区块。两处都写明软件本身不含任何广告——
    README 的卖点里有「无任何弹窗广告」,只加合作入口而不作区分,读者会以为要往安装包里塞广告

  • CI 按平台拆成三个工作流(ci-linux / ci-windows / ci-macos):
    失败时一眼看出是哪个平台哪一层,Windows/macOS 排队也不再拖住 Linux 的结论。
    macOS 侧新增三项只有那里能验的检查:产物确实未签名、边车在本机能执行且架构正确、
    Info.plist 版本与 package.json 一致(不一致会让用户永远看到「有新版本」)。

  • 新增三层回归脚本(此前完全没有自动化覆盖):test:updater(14 例,
    更新流程)、test:settings:migration(15 例,设置兼容)、
    test:package(9 例,真实打包产物内容)。含公共骨架 scripts/lib/harness.mjs。

  • 发布流程新增 gate job:全量测试通过才允许构建;新增 prerelease 选项,
    让测试版本不进稳定用户的更新通道。

  • 设置读取统一到 readSettings():此前 deps.ts / download.ts /
    DownloadView.vue 各复制了一份读法,filenameTemplate 因此出现过两个不同的默认值。

  • scripts/test-parse-integration.mjs 此前从未接进任何工作流(能通过但没人跑),
    现已挂上。

  • 版本与清单一致时仍显示「更新」按钮:界面只看「该依赖由 DownVid 托管」就渲染
    「更新」,与版本无关。用户点下去白下 37MB,下完还是同一个版本,看起来像更新失败。
    现在由后端回传 requiredVersion,界面用 isOutdated() 比对当前版本与清单要求,
    一致时显示「已是最新」;只有确实落后才给「更新」。系统自带的那份永不提示更新
    (覆盖它会踩到用户的包管理器)

  • 更新检查失败时会静默回答「已是最新」:electron-updater 走
    releases.atom + /releases/latest 两步,任一环节被网络或限流打断就进 catch,
    而 catch 里直接返回 hasUpdate: false —— 用户看到的就是「检测不到新版本」。
    现在失败时改用 GitHub API 兜底(只需一个请求),两条路都失败才如实报错

  • 更新流程一条日志都不写,打包应用出问题只能靠猜。现在检查的每个阶段
    (开始 / 缓存复用 / 结果 / 兜底 / 失败)都写进 userData/downvid.log


完整历史见 CHANGELOG.md · 遇到问题请先看 故障排除