Skip to content

fix(local-asr): 下载进度全局浮层 + 进度节流 + 取消清理 + 看板过滤 + 3s 文件监测 - #925

Merged
appergb merged 1 commit into
betafrom
fix/asr-download-fixes
Aug 5, 2026
Merged

fix(local-asr): 下载进度全局浮层 + 进度节流 + 取消清理 + 看板过滤 + 3s 文件监测#925
appergb merged 1 commit into
betafrom
fix/asr-download-fixes

Conversation

@appergb

@appergb appergb commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

目标

一轮解决本地 ASR 下载/管理的前端体验问题:进度条全局可见且不抽搐、取消下载真正清理磁盘、看板只显示已下载模型、磁盘文件变化 3 秒内自动跟随、同供应商切换模型不再闪烁。

改动

Rust(src-tauri)

  • asr/local/download.rs / sherpa_download.rs / foundry_runtime.rs:进度事件 ≥150ms 节流(原来每个 HTTP chunk emit 一次,前端进度条高频刷新「抽搐」)
  • 取消下载时清理 .partial / .partial.idx(sparse 预分配全长,1.7B 模型残留可达 1.7GB),新增 remove_partial_artifacts 纯函数 + 单测(915 pass)

前端(src)

  • components/GlobalDownloadProgress.tsx:自监听三引擎下载事件、portal 到 body,挂 App 根——主窗口所有页面右上角常驻显示,含取消按钮;与页面 state 解耦
  • 看板只列已下载/下载中的模型(下载弹窗保留全目录列表),条目行距加大可容纳约 4 个模型
  • 3s 轮询磁盘状态 + 选中模型瞬间校验 + 下载完成事件驱动刷新
  • 修平台 bug:fetchAll 在 macOS 上拉 sherpa/foundry catalog(命令未注册)导致 Promise.all 整体失败、下拉永远为空 → 按平台分支
  • 同 provider 切换模型走轻量路径 + 乐观 draft 值,修「切换 0.6B/1.7B 闪烁」

兼容性

  • 无新增权限;prefs 结构不变;仅新 GlobalDownloadProgress 组件挂在 App 根(纯展示)
  • foundry(Windows)SDK 内下载无法中途取消(SDK 行为),取消入口保留

测试

  • cargo test --manifest-path src-tauri/Cargo.toml:915 passed / 0 failed
  • npm run build:tsc + vite 通过
  • npm test:16 项契约全过
  • 手动 macOS 验证待 DMG 构建后执行(全局进度条/取消清理/看板过滤/3s 监测/下拉无闪烁)

证据路径

DMG 构建后附截图。

- 进度浮层全局化:新 GlobalDownloadProgress 自监听三引擎下载事件,挂 App 根,
  主窗口所有页面常驻显示;含取消按钮(按引擎分派 cancel 命令)
- Rust 进度事件 ≥150ms 节流(qwen3/sherpa/foundry),修进度条高频抽搐
- 取消下载清理 .partial/.partial.idx(sparse 预分配全长,1.7B 模型残留巨大),
  新增 remove_partial_artifacts 单测
- 看板只列已下载/下载中的模型(下载弹窗保留全目录列表),条目行距加大
- 3s 轮询磁盘状态 + 选中瞬间校验 + 下载事件驱动刷新;fetchAll 按平台分支
  (macOS 上 sherpa/foundry catalog 命令未注册导致 Promise.all 整体失败)
- 同 provider 切换模型走轻量路径 + 乐观 draft 值,修下拉闪回旧模型
@appergb
appergb merged commit df1a42c into beta Aug 5, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant