桌面使用与辅助功能
ZiFile 桌面端以 Rust 和 Iced 实现。压缩、校验与解压在后台任务中执行,界面显示条目/字节进度,并允许取消;文件名、文件内容和密码不会上传。
CLI 密码输入
Section titled “CLI 密码输入”CLI 不接受会进入进程参数和命令历史的 --password <值>。加密的 list、test、extract 和 create 使用 --password-stdin,从标准输入读取一行非空密码;只删除行尾,密码前后空格会保留。
$password | zifile test archive.7z --password-stdin$password | zifile extract archive.7z output --password-stdin首次启动根据系统区域选择简体中文或英文。左下角可随时切换语言和深浅主题。ZiFile 只在 %LOCALAPPDATA%\ZiFile\settings.conf 保存语言和主题,不保存压缩密码、路径或最近打开记录。
| 快捷键 | 操作 |
|---|---|
Ctrl+O |
打开压缩文件 |
Ctrl+N |
进入创建页 |
Ctrl+A |
在归档页选择全部条目 |
Escape |
取消当前可取消任务 |
归档路径可即时搜索。结果按每页 500 项显示,避免把整个大型归档一次性构造成 UI 控件。搜索会返回第一页;上一页和下一页按钮用于浏览结果。安全核心仍会在列出阶段执行条目数、展开大小和压缩倍率限制。
Windows 任务栏
Section titled “Windows 任务栏”Worker 的字节进度(无字节总量时回退到条目进度)同步到 Windows 任务栏;未知总量使用不确定状态,取消中使用暂停状态,任务结束后清除。任务栏集成失败不得影响归档操作。
运行归档任务时仍可提交打开、重载、完整性校验、解压或创建。ZiFile 按提交顺序串行执行,状态栏显示等待数量;“清空队列”只删除尚未开始的任务,“取消”只取消当前 Worker,随后继续下一项。队列最多容纳 32 项(包括运行中任务),避免无限占用内存。
每个排队请求只保存在当前进程内,并在提交时快照来源、目标、冲突策略和密码。清空、执行完成或退出会释放这些数据;设置文件和日志不记录队列或密码。对目标路径有先后依赖的任务仍应按安全顺序提交,因为 ZiFile 不会猜测任务间依赖。
已验证与待验证
Section titled “已验证与待验证”2026-08-28 fresh full-workflow 键盘回合已通过本机 x64 可访问候选:正反向导航、ZIP 归档校验与 Reload、密码框和搜索作用域 Ctrl+A、选择/冲突策略、解压状态以及创建表单均完成。该结果只覆盖可重复的 UI Automation 前台会话;Narrator、IME、高对比度、DPI、物理 ARM64 和正式辅助技术认证继续待验证。
自动测试与 Criterion 已覆盖 100,000 个模拟条目的过滤和有界分页;Windows 实机已检查 1,200 项 ZIP 的三页翻页、搜索、中英文、深浅主题及 Ctrl+N。Dioxus 候选另以真实 2 项 ZIP 验证归档区 Ctrl+A、动态选择标签与 live status,并以真实 100,000 项 ZIP 验证 Worker 列出、500 行有界 UIA 表格、搜索、多页导航和加载取消。五轮加载取消均进入最终取消状态,且对应 Worker 已退出。
独立键盘回合已从干净启动点用 Tab/Shift+Tab/Enter 正反向切换首页、归档页与创建页,并用键盘切换主题和语言;Ctrl+N、Ctrl+O 与文件选择器 Escape 取消也通过。随后新增的前台保护脚本直接读取 WebView2 内部 FocusedElement,在中英文流程中复验导航顺序、disabled 按钮跳过、7z 格式选择、压缩等级 6→7→6、密码键入/清空和来源按钮可达。测试不会输出密码,用户切换到其他窗口时拒绝继续发送按键。
归档选择区现在把全选复选框命名为“选择全部归档文件”或“清除全部归档文件选择”,并用原子 aria-live 状态报告“已选择 N/总数项”。归档表格区域和“解压选中项”按钮通过 aria-describedby 引用同一摘要;单项勾选或取消会在全局状态中报告路径和最新数量。中英文动作、摘要、单复数和状态变化由候选二进制的纯 Rust 单测覆盖。该证据证明语义接线和状态文案,不替代 Narrator 实机遍历。
归档搜索现在始终显示“匹配数/总项目数”摘要,搜索输入与结果表格通过 aria-describedby/aria-controls 关联该摘要和表格;0 项时显示明确的双语空结果,不再保留无意义的“第 1/1 页”分页。为避免实时过滤在每次按键后产生 live 播报,摘要固定 aria-live=off;用户按 Enter 时才通过全局 polite 状态播报当前结果,显式“清除搜索”按钮会清空关键词、复位页码并播报全部数量。中英文单复数、筛选和空结果文案由 Rust 单测覆盖。
全局状态区区分普通信息与错误:排队、取消和选择变化使用 role=status/polite;Worker 失败、队列满、意外 Worker 结果和内部队列错误使用原子 role=alert/assertive,并提供普通主题错误强调与强制颜色系统色。状态消息、队列数量和进度条现在是三个独立语义区域,高频进度值不再位于原子 live region 内,避免每 100 ms 重新播报整个页脚。进度条通过 aria-valuetext 提供百分比、已处理/总字节和项目数,取消按钮引用当前操作状态并公开 Escape 快捷键,清空队列按钮引用独立的单复数队列摘要。单测锁定中英文进度/队列文案和“只让错误打断”的契约;该代码级证据仍需 Narrator 实机复核。
创建页来源列表也提供原子 live 数量摘要。每个“移除”按钮的可访问名称包含对应完整路径,不再是一组无法区分的同名按钮;添加文件、添加文件夹、拖入、移除和清空都会报告本次变化及剩余总数。移除按路径匹配而不是依赖可能过期的列表索引。中英文路径/数量文案和单复数由 Rust 单测覆盖。
创建输入要求来自共享核心能力:ZIP、7z 和 TAR 组合接受文件与文件夹,六种单流格式只接受恰好一个现有文件。Iced 基线和 Dioxus 候选都会对单流格式禁用“添加文件夹”,在来源不合法时禁用创建,并在打开保存对话框前显示中英文修复建议;防御性预检还会阻止绕过 UI 的无效提交。
共享队列的 FIFO、容量、陈旧完成保护、清空语义和敏感载荷释放已有纯单元测试,两套 UI 已通过严格 Clippy 与全 feature 测试;真实前台多任务 UI 冒烟仍待无干扰交互回合,因此路线图暂不标记完成。
Windows 11 Explorer 扩展由纯 Rust COM DLL 提供两个现代命令:“使用 ZiFile 创建压缩文件”会把最多 256 个来源送入创建页;“使用 ZiFile 解压到同名目录”只对单个受支持归档显示,并以 --extract-here 打开可见桌面窗口。桌面在签名优先列出成功后选择全部普通文件,解压到归档旁的同名目录并对冲突重命名;进度、取消、安全限制和密码重试仍由桌面与隔离 Worker 负责,DLL 本身不解析归档或接触密码。真实 Explorer 激活仍需可信安装包验证。
这些检查尚不等同于完整辅助功能认证。当前 Iced 0.14 UI 不能宣称具备完整的 Windows UI Automation/Narrator 语义树。中文 IME、归档页完整实际键盘/Narrator 遍历、可见焦点、屏幕阅读器、高对比度、每显示器 DPI 和 Windows Application Certification Kit 仍是上架前门禁。可访问 UI 路线见 ADR-0005。
可访问 UI 候选
Section titled “可访问 UI 候选”开发者可用以下命令构建候选;它不会替换默认 Iced 可执行文件:
cargo build -p zifile-desktop --features accessible-ui --bin zifile-desktop-accessibletarget\debug\zifile-desktop-accessible.exe sample.zip候选使用 Rust RSX + Dioxus Desktop/WebView2,并复用 zifile-worker.exe。当前可执行打开、列出、校验、选择性解压和创建流程;命令行参数可直接打开归档。x64/ARM64 候选构建、打包、校验和、SBOM、来源证明、离线 CSP、原生拖放和核心快捷键链路已接通;替换默认 UI 前仍需完整辅助功能验证、真实拖放复验和 ARM64 实机运行。