v2.5.7
补丁版,一句话:稳定性专项(36 项审计修复:崩溃 / 静默丢数据 / 死锁);共享文件夹读不出来时给人话不给堆栈;文件夹分享的包用 MEGA 上的真名,不再显示"封装 #N"。
🐛 崩溃、静默丢数据与死锁
- ELC 账号导入后不再丢:导入即落盘,此前只改内存、重启就没了
- 保存成功后清掉粘滞的错误标志:不再弹假"配置无法保存",也不再丢掉刚填好的设置
- 多选删除按对象引用匹配,不再按可变的优先级序号匹配(此前会删错行 / 漏删)
- 卡死的下载会取消分块线程;连接与下载循环之间那段裸区抛出的异常会把该分块标失败,走指数退避与 UI 报错,不再原地紧循环重启
- 远端文件大小变了会重建分块布局(原来的自愈逻辑此前根本够不着)
- 解压遇到同名但大小不同的既有文件,保留成
name (2).ext并按原名写入新文件;同名同大小幂等刷新。RAR/ZIP/TAR 与 7z 两条路径都覆盖 - 无法解析的
Range头回落到 200 全量(RFC 7233),不再发一个"声称全长 206 却只给约 16 字节"的响应 - 第二个实例不再把第一个实例的链接当新链接重放
- 单实例判定改为原子,关掉原先能跑出两个"第一实例"的竞态窗口
- MEGA 文件夹的孤儿节点挂到根之后继续循环,其后代仍能被解析(此前整棵子树被搁死在包根)
- ToolTip 的窗口句柄泄漏修掉;日志 flush 不再抛异常;用户语言文件损坏时回落到内置语言包,不再静默杀掉启动
🌐 共享文件夹读不出来时给人话(issue #6)
- 新增传输层错误分类器:把 TCP / DNS / 防火墙 / VPN / 代理类失败(含把 MEGA API 域名解析到非 MEGA IP 的 DNS 污染)与真正的 API 错误分开
- 传输失败给可操作的提示(查网络、防火墙 / VPN、配代理、确认浏览器能打开
https://mega.nz);无效响应给一行技术线索。两者都不再甩原始堆栈
✨ 文件夹分享的包用真名
- 不填包名添加文件夹分享时,主列表不再显示兜底的"封装 #N",而是 MEGA 上那个文件夹的真名。名字一直在解密,只是共享根被置空之后没人再读
- 混合批次(文件夹 + 散链、两个不同文件夹)继续用兜底名,不猜
- 共享根改用严格判据识别;原逻辑在响应里不含共享根时会拿某个子文件夹名当包名
- 带子目录的文件夹分享只回写显示名,不额外套一层顶层目录,落盘形状与 issue #4 之后完全一致
/file/<id>单文件包仍按文件名命名,既有路径不动;Web 推送同样使用文件夹真名
🩹 顺带修掉上一批自己引入的回归
- 首启配置框回来了:清错误标志那条把"配置加载失败"也一起清了,而列宽迁移在检查之前总会先存一次盘,于是全新安装永远看不到那个强制配置对话框(正是专门加固过"不填账号密码不许取消"的那个);损坏的配置也会被静默重置成默认值。现在加载错误与保存错误分成两个字段,互不清除
- 关闭时不再空转:等待循环改成裸
DoEvents()之后变成热自旋,实测约 19 万次/秒,每次都抢锁并遍历整个下载列表,把它正在等的线程饿死。现在DoEvents+Sleep(50),消息泵约 14 Hz,自旋没了 - ELC 账号变更现在能被周期存盘看见:账号节点因为随机 IV 加密不能参与 XML 比对(否则每 5 秒必写一次盘),副作用是账号变更对自动存盘完全不可见。改为附加一个 SHA-256 内容指纹参与判断,只留哈希不留明文
- Web 界面导入坏 ELC 不再无声消失:会记录真实原因,并保住同一批里的其余链接
- 解压中途关闭时的取消等待上限 60 秒 → 5 秒:原先必然烧满整个关闭超时
🌍 多语言
- 上一批新增的 5 个整句键在任何语言包里都不存在,中文界面因此显示英文原文,现已补进 en-US / zh-CN / zh-TW
- 本轮共新增 11 个键,三语同步;其余 7 个语言包按既有回落机制走英文
Full Changelog: v2.5.6...v2.5.7