Releases: t3nc/TgDL_repo
Releases · t3nc/TgDL_repo
Release list
v0.2.2
[0.2.2] - 2026-09-16
让任务队列的文件行显示完整文件名(此前只显示被内核裁断的路径片段,如 Do…)。
修复
- 正在下载的文件名显示不全:内核对进度行按终端宽度裁剪
(消息区 =(终端列数 − 50) × 3/5,且只在进程启动时读取一次)。消息区一旦装不下
「会话名前缀 + 下载目录 + 文件名」,行尾的文件名就会被直接切掉 —— 实测 163 列时
消息区只有 67 列,界面上仅剩…\Videos\Do…(Do其实是目录名downloads的开头)。
现在下载会话的终端固定为 280 列(控制台 fit 也不会再把它缩小),
并在仍被裁断时按截断前缀回到落盘目录做唯一匹配补全完整文件名(内核下载中写的是
<最终文件名>.tmp,已做临时后缀归一化;前缀有歧义时保持截断显示,绝不显示成别的文件)。 - 下载历史里的文件名:同步受益。历史记录的是完整路径,查重时判断「文件是否仍在磁盘上」更准确。
变更
- 运行日志抽屉补充说明:下载会话终端固定 280 列,原始输出因此可能换行;登录会话不受影响。
注意
- 控制台「tdl 原始输出」在下载会话下每行更长、在面板内换行更多;结构化日志与任务队列界面不受影响。
v0.2.1
[0.2.1] - 2026-09-16
修复批量下载时任务队列「总进度不更新、总速度不显示」的缺陷。
修复
- 任务总进度与总速度恒为 0:目录采样直接使用
DirEntry::metadata(),而它在 Windows 上
返回的是目录枚举那一刻缓存的快照 —— 对内核正在写入的xxx.mp4.tmp可能长时间读到 0 字节,
于是聚合进度停在0 B / 7.18 GB 0.0%、总速度停在0 B/s,而文件行与运行日志一切正常。
现在扫描改为实时读取文件大小,并且任务级聚合优先采用内核明文报告的条目进度(与文件行同源),
仅在尚未识别到任何条目时才回落到目录扫描。 - 取消任务后总进度倒退回 0%:收尾也统一按条目口径取真实停止点,只有全部条目已完成时
才用实际落盘量校准总量(保留「已完成任务不会停在 99.x%」的既有修复)。 - 文件行显示完整落盘路径:任务卡片、下载历史与重复下载确认列表改为只显示文件名,
完整路径移到悬浮提示(内核进度行末尾给的是输出路径)。
变更
- 目录扫描的类型判定改用
file_type()、体积改用fs::metadata()实时读取,并在代码中固化
「Windows 上entry.metadata()是枚举快照」这一结论防止回归。 - README 的当前版本号与发布流程说明同步更新(版本号四处一致:
package.json/
tauri.conf.json/Cargo.toml/UPDATELOG.md)。
v0.2.0
[0.2.0] - 2026-09-16
新增「客户端本体自动更新」:应用可以直接在界面里发现新版本、查看更新内容、下载安装包并静默升级,
彻底摆脱「手动下载新安装包再覆盖安装」的流程。
新增
- 应用自动更新(Windows)
- 启动 8 秒后自动检查新版本(可在「设置 → 应用更新」关闭),结果缓存 6 小时
- 全局更新横幅 + 更新弹窗:版本对比、更新说明(取自 UPDATELOG 对应版本段落)、分步进度
- 下载安装包 → 强制比对 SHA256 → 启动安装器
/S /UPDATE /R→ 应用退出并在安装完成后自动重启 - 「跳过此版本」与「恢复提示」;更新失败不影响当前版本,可直接重试
- 状态栏显示当前客户端版本(与内核版本并排)
- 发布通道:新增独立的发布仓库客户端
src-tauri/src/app_update/- 主通道走 Releases API(可拿到更新说明),被限流或网络异常时自动降级为
release-index.json(不消耗 API 配额,且携带每个版本的 SHA256) - 复用全局代理与内核设置里的加速前缀 / GitHub Token
- 主通道走 Releases API(可拿到更新说明),被限流或网络异常时自动降级为
- 配置:新增
appUpdate配置段(autoCheck/useProxy/skippedVersion),
旧配置文件缺少该段时自动补默认值,不会触发「配置损坏」回退
变更
- 发布脚本
scripts/publish-release.mjs增加src-tauri/Cargo.toml版本一致性校验:
现在package.json/tauri.conf.json/Cargo.toml/UPDATELOG.md四处版本必须一致 - 内核更新与内核安装器的 User-Agent 改为携带真实版本号(编译期注入)
kernel::sha256_hex提升为公开函数,供安装包校验复用
注意
- 自动更新链路从本版本(0.2.0)起才存在:v0.1.0 没有更新代码,需要手动安装一次 v0.2.0;
之后的所有版本都可以在应用内一键升级。 - 安装包未做代码签名,Windows SmartScreen 可能提示「未知发布者」;应用内安装前会强制校验
SHA256,校验不通过会拒绝执行安装器。 - 应用更新只支持 Windows(分发产物为 NSIS 安装包)。
v0.1.0
[0.1.0] - 2026-09-16
首个可用版本。基于 Tauri 2 的 Windows 桌面客户端,内嵌 tdl 内核(预置 0.20.4),
提供批量下载、登录向导、任务队列与内核自更新能力。
新增
- 批量下载
- 每行一个 Telegram 消息链接,自动去重、合法性预校验,空行忽略
- 导入官方客户端导出的 JSON 文件(
-f) - 超长列表按命令行长度预算(20000 字符)自动拆分为多个子任务串行执行
- 下载目录、文件名模板(变量/函数速查 + 实时预览)、扩展名白名单/黑名单(互斥)
- 按 MIME 重写扩展名、跳过同名同大小、相册整组下载、反序下载、Takeout 会话
- 断点续传策略:固定传入
--continue/--restart,避免交互式确认卡死
- 并发与节流:稳健 / 均衡 / 极速三档预设,并支持并发任务数、单任务线程数、连接池、任务间隔微调
- 登录向导:二维码扫码登录、手机号 + 验证码登录(含两步验证密码)、多账号命名空间隔离
- 任务队列:独立页卡,按会话(DialogID)两级展开进度;状态筛选、取消(保留断点)、重试、打开目录、删除记录
- 重复下载检测:本地下载历史;提交时提示已下载链接,可选「仍然全部下载」(
重下_前缀,不覆盖)或「跳过」 - 运行日志:内置只读终端(xterm.js)原样呈现 tdl 的 ANSI 输出(二维码、彩色进度条)+ 结构化日志列表
- 内核管理:显示版本与来源(内置 / 已更新 / 自定义路径)、检查更新、分步更新进度、多版本回滚、指定版本安装
- 设置中心:代理、存储路径、NTP、重连超时、主题外观与配置维护,全部本地持久化
- 浏览器预览模式:
npm run dev下所有后端调用回落到模拟实现,便于无 Rust 工具链时验收界面
修复
关键缺陷排查记录(完整分析见 README「已修复的关键缺陷」):
- 事件字段命名不匹配导致全部事件静默失效(
rename_all不作用于变体内部字段) - 终端订阅被误删导致二维码永不显示(改用
clear()而非dispose()) - 开发端口落在 Windows 保留区间(
EACCES),改用 5173 - 二维码因终端可视高度不足被截断
- 验证码 / 两步验证步骤无法推进(交互提示不带换行符,新增「未结束行」通道)
- 时长格式校验过严导致「开始下载」在默认配置下永久禁用(阻塞性)
- 底部执行条跑到内容末尾(
position: fixed受transform祖先影响,改用sticky) - 二维码模块缝隙导致手机无法识别(改为解析半块字符并用 canvas 重绘,附结构校验)
- 下载完成后界面永远停在「下载中」(ConPTY 不给出 EOF,收尾顺序错误,阻塞性)
- 进度条恒为 100%、数值显示成
X/X(标题与进度条同行导致解析错位) - 「生效参数快照」链接数恒为 0(开关型参数吞掉后续
-u) - 任务队列进度恒为
0 B(tdl 真实进度行无/总量、进度条字符为#、采样目录与-d不一致) - 任务已完成但子任务进度停在 92%(go-pretty 不渲染终帧,改为「事实通道」判定完成)
变更
- 项目结构定型:前端
lib / hooks / store / components / pages,后端commands / config / kernel / tdl / auth / download / history - 测试基线:前端 27 个单元测试通过;Rust 102 个单元测试 +
pty_exit集成测试通过(pty_prompt默认忽略)
注意
- 可执行文件必须与同级
resources/目录一起分发;单独拷贝 exe 会丢失内置内核,
可在「内核管理」中点击「检查更新」重新获取。 - 构建期
scripts/fetch-kernel.mjs为「尽力而为」,失败时会写入tdl.version = none但不中断构建。