Skip to content

Releases: chanhuan1/CHzip

v4.0 品牌图标全套更换 + 目录树体验优化

Choose a tag to compare

@chanhuan1 chanhuan1 released this 25 Sep 12:59

CHzip v4.0

品牌图标全套更换

全新设计(极光暗夜深蓝渐变底 + 智能归档文件夹 + 水晶毛玻璃 + 露出提取文件 + 金色拉链),覆盖根目录与 fnOS 桌面/应用中心全部 10 个尺寸档位;品牌图标缓存键纳入版本同步门禁(不再固定 1.0.0)。

目录树体验优化

  • 多类型文件专属彩色图标(代码 / 图片 / 视频 / 音频 / 压缩包 / 文档 / PDF)
  • 层级缩进对齐虚线(深浅主题自适应)
  • 双击目录行展开 / 折叠;单击行高亮
  • 新增「全部展开 / 折叠」快捷按钮;展开的文件夹切换为打开态图标

顶栏控件对齐

历史 / 主题切换 / 状态徽章统一 34px 高度、13px 字号与胶囊圆角,hover 蓝底高光。

测试:413 → 416。版本号升至 4.0(五处同步)。

安装

在飞牛应用中心手动安装对应架构的 .fpk:

  • x86_64:CHzip_4.0_x86_64.fpk
  • arm64:CHzip_4.0_arm64.fpk

校验值见 SHA256SUMS.txt。

v3.9

Choose a tag to compare

@chanhuan1 chanhuan1 released this 25 Sep 08:26

v3.9 更新记录

修复:文件树实时高亮在真机上完全不亮

三个真机根因逐一排查定位(靠新增的 ?debugHighlight=1 调试开关在飞牛上抓日志):

  1. .gz 单文件流的文件计数被误当文件名:解压 .gz 等单文件流时,7-Zip -bsp1 输出的「当前文件」是 1、2… 这样的已处理文件计数而非文件名,engine.js 原样传给前端,文件树拿 "1"/"2" 匹配路径(永远 NONE)。已过滤纯数字序号。
  2. \b 退格控制符与 - /+ 动作标记未剥:真机 7-Zip 用 \b(退格)+ 空格做原地刷新,文件名前带一串 \b 与 - 标记(如 \b\b\b- dir/x.mp4),前端未剥导致匹配失败。后端 extractProgressName 与前端 normalizeHighlightPath 现都剥除控制字符与动作前缀。
  3. DOM 重建后高亮不恢复:文件树分批异步渲染、且展开/折叠/搜索会 replaceChildren() 重建,高亮一旦随 DOM 消失便不再恢复。renderTree 末尾现按记住的当前文件补挂高亮。

其它变更

  • 顶栏版本号与真实版本实时同步:原硬编码 v3.7 漂移。现从 CSS 资源 ?v= 缓存键实时推导,发版只改 ?v= 一处,顶栏自动跟随。
  • 移除解压「续跑」功能:取消解压后保留已解压文件,想继续可重新解压并选「跳过已存在文件」冲突策略达到同等效果。
  • 高亮样式沿用整行发光(背景呼吸 + 左侧蓝竖条 + 文件名加粗)。

测试:413。版本号升至 3.9。

安装

在飞牛应用中心手动安装对应架构的 .fpk(x86_64 / arm64)。校验值见 SHA256SUMS.txt。

🤖 Generated with Claude Code

v3.8

Choose a tag to compare

@chanhuan1 chanhuan1 released this 25 Sep 08:23

v3.8 更新记录

  • 修复:解压冲突策略四选一(重命名/覆盖/跳过/保留较新,F1)。
  • 新增:解压完成智能拍平同名一层目录(F2)。
  • 新增:完整性体检(7z t)异步任务 + 坏文件归因(F6)。
  • 新增:失败保留部分成果 + 续跑重试(F8,续跑后于 v3.9 移除)。
  • 新增:并发上限从硬拒绝 429 改排队等待(F7)。
  • 新增:文件树展示压缩率 + 加密锁标(F13)。
  • 新增:乱码检测一键换代码页 + 分卷缺失引导卡(F12)。
  • 新增:包内图片缩略图墙 + PDF 免解压预览(F11)。

本版本仅作记录,未单独发布安装包;请使用 v3.9 安装包。

v3.7

Choose a tag to compare

@chanhuan1 chanhuan1 released this 25 Sep 08:23

v3.7 更新记录

  • 修复若干解压稳定性与界面一致性问题(详见提交历史)。
  • 工程:版本号五处同步门禁(manifest / package.json / index.html ?v= / README 徽章与安装命令),漏改任意一处 npm test 即红。

本版本仅作记录,未单独发布安装包;请使用 v3.9 安装包。

CHzip 3.6

Choose a tag to compare

@chanhuan1 chanhuan1 released this 22 Sep 13:12

CHzip 3.6 —— 8 大新功能

解压更强

  • F1 解压冲突策略四选一:自动重命名 / 覆盖 / 跳过 / 保留较新
  • F2 解压完成智能拍平「同名一层目录」,不再多套一层壳
  • F6 完整性体检:先跑 7z t 流式 CRC 校验,坏文件给「疑似」归因
  • F7 并发上限从硬拒绝改为排队等待,显示「排队中,前面还有 N 个」
  • F8 失败保留部分成果 + 一键续跑(已存在文件自动跳过)

体验更好

  • F11 包内图片缩略图墙 + PDF 免解压预览
  • F12 乱码检测一键换代码页 + 分卷缺失引导卡(明确告诉你右键哪一卷)
  • F13 文件树展示压缩率 + 加密锁标

支持 x86_64 与 arm64,安装包与校验和见下方资产。

CHzip 3.5

Choose a tag to compare

@chanhuan1 chanhuan1 released this 18 Sep 13:33

CHzip 3.5 —— 死代码清理 + 两个运行时 bug 修复

修复

  • 两个会在运行时崩溃的引用错误(全盘死代码扫描发现):
    • 嵌套 tar 解压的清理失败路径调用了未导入的函数(safeDiagnosticWrite),会抛 ReferenceError 并吞掉正常结果。
    • 压缩包打开失败、目录授权弹窗两条错误路径调用了未导出的诊断函数(uiDialogs.recordDiagnosticError),会抛 TypeError。

工程

  • 死代码清理:逐项验证零引用后删除后端与前端一批死函数、死导出、死字段与失效 CSS(含 v2.4 起就接不进 CGI 的 isAllowedOrigin、废弃的 taskMini 样式等)。
  • 新增「前端调用与导出对象对账」测试,防止下一次漏导出。
  • 测试:292 → 297。

安装

在飞牛应用中心手动安装对应架构的 .fpk(x86_64 / arm64)。校验和见 SHA256SUMS.txt。

CHzip 3.3

Choose a tag to compare

@chanhuan1 chanhuan1 released this 16 Sep 05:34

v3.3(2026-09-16)— 修复固实压缩包预览把 CPU 跑满

修复

  • 预览固实压缩包里的文件会把 CPU 跑满:固实(solid)压缩把包内所有文件当成一条连续的流来压,取出其中任意一个文件都必须从流的开头解压到目标位置 —— 代价由压缩包体积决定,与目标文件大小无关:1GB+ 的固实 RAR 分卷,预览一个几 KB 的 txt 也会让一个核 100% 跑满到解压完为止。而 preview-file 是唯一一处绕过统一封装、直接调用 7-Zip 的代码,把超时一起漏掉了,于是这个代价完全没有上界。现在补上 45 秒超时(超时会真的杀掉 7z 子进程)、改走统一封装以继承超时与错误分类,并在预览固实包时提前说明原因。

新增

  • preview 返回 solid 标记(从已有的 7z l -slt 属性段零成本读出),前端在预览固实包前提示「需先解压整个包,可能耗时较久」,不再让用户面对一次没有解释的长时间等待。

工程

  • runSevenZipSync 新增 encoding 选项(默认 utf8,既有调用点行为不变),二进制预览(图片)不再需要绕过统一封装
  • 前端预览改为可取消,连点不会再同时跑起多个 7z
  • 测试 258 → 269

说明

固实压缩包取出单个文件的耗时由算法决定,无法消除;本次改动把它从「无上界」变为「最多 45 秒 + 一句明确提示」。

CHzip 3.2

Choose a tag to compare

@chanhuan1 chanhuan1 released this 15 Sep 11:37

v3.2(2026-09-15)— 正确性 / 安全修复 + 工程加固

修复

  • 进度条下方堆着一串百分比:7-Zip 在管道(非 TTY)下会把文件名行与进度行挤在同一行且没有 \r 分隔,而百分比正则只在行首匹配 —— 于是解析器退化到「取行内第一个 %」,把第一个 0% 之后的内容全当成了文件名。现在按「前后都是空白」识别进度百分比,并从扣掉百分比后的残余文本里取文件名;前端另加一道兜底。已在飞牛真机验证通过
  • 任务永久卡在「排队中」:worker 启动阶段(读任务、打开源文件)抛错时进程以 0 退出,父进程无法感知失败,任务状态永远停在 queued。现在会落终态并以非 0 退出
  • 分卷识别可被普通文件名打挂:backup.20260915 这类合法备份名会被当成 2000 万号分卷,info / preview 需要分配近 2000 万元素的数组(实测峰值内存约 900 MiB;10 位数字直接 OOM)。分卷号与缺失枚举现在都有上界
  • 诊断报告的授权目录被误脱敏:authorizedRoots 因敏感词子串匹配(authorized 含 auth)恒被替换成 [REDACTED],导致诊断报告无法用于排查目录授权问题。顺带修掉含 -p 的路径被误伤
  • 清理步骤相互干扰:解压收尾时若临时目录删除失败(权限异常),密码文件覆写与选择文件删除会被整体跳过;过期清理与 worker 并发删除时也可能让 extract / jobs 请求报内部错误

工程

  • 补齐 source / selection / diagnostics 三个安全模块的单测(此前零直连测试)
  • 新增版本号一致性门禁:manifest / package.json / index.html 的 ?v= / README 徽章与安装命令,漏改任一处 npm test 就会失败
  • 新增 GitHub Actions CI(push / PR 跑 node --check + npm test)
  • 清理死代码(parse-worker.js、不可达的 configureVariant),constants.js 成为常量的唯一来源
  • 文档与实现对齐:API.md 删掉从未实现的 verify 端点,补上 comment 与 preview-file

测试:172 → 258(+86)

安装

下载对应架构的 .fpk,在飞牛应用中心手动安装;校验和见 SHA256SUMS.txt。

CHzip 3.1

Choose a tag to compare

@chanhuan1 chanhuan1 released this 14 Sep 04:21

v3.1(2026-09-14)— 性能优化 + 清理

后端 — 解压吞吐

  • 进度回写节流:由「每个 7z chunk 都落盘」改为「≥200ms 或百分比跳变 ≥1 才落盘」,热路径 payload 从 ~64KB 降到 <1KB
  • 增量进度解析:createProgressTracker(StringDecoder + 增量解析),多字节字符不再乱码
  • 列表校验进程内化:删掉 listing-validator.js 独立子进程,worker 直接 spawn 7z 流式校验
  • 陈旧锁回收:worker 被 SIGKILL 后任务不再永久卡死(30s staleMs)
  • 节流清理:cleanup.stamp 跨请求节流(≥60s),只在用户主动动作接口触发
  • listAndTrimHistory:一次目录遍历同时完成溢出修剪与列出
  • toJobView 投影:status 轮询不再回传 log/passwordFile 等内部字段
  • api.js:--worker 分支惰性加载 worker 模块

前端 — 轮询与渲染

  • 统一轮询器 createPoller:递归 setTimeout + in-flight 守卫 + 页面隐藏降频 + 空闲退避
  • requestJson 超时 + AbortController
  • 密码库读缓存:勾选不再触发全量 AES-GCM 解密
  • 大文本预览截断:渲染 20000 行、高亮 3000 行(复制仍复制全文);escapeHtml 纯字符串替换
  • 文件树:O(节点数) 预聚合、分批渲染、事件委托、勾选定向刷新
  • 任务流按 job.id 复用行;任务中心渲染签名短路
  • 12 个 script 加 defer

清理

  • 删除 watcher.js、listing-validator.js、watcher.test.js 及多个死函数
  • lib/ 模块数 20→18

测试:98→172(+74)

Bug fixes

  • cleanupExpiredIfDue minIntervalMs:0 误触发节流
  • ui-tree 分批渲染选中一致性测试断言

CHzip v3.0

Choose a tag to compare

@chanhuan1 chanhuan1 released this 13 Sep 12:18

优化ui界面圆角化;加入历史记录日期显示;加入历史记录主动清除按钮;修复进度条下方显示整串百分比(7-Zip 非 TTY 管道下多进度挤同行导致停在 0%);版本升至 3.0。含此前 v2.5–v2.9 全部改进。