Skip to content

20260710 v0.12.0 async gui watchdog

che cheng edited this page Jul 10, 2026 · 1 revision

2026-07-10 — v0.12.0:async MCP 工具 + 首顆 stapled bestASR.app + watchdog 修正

出貨(GitHub Release v0.12.0,四個 assets)

  • MCP async job mode(#86,PR #89)transcribe 增加 opt-in async 參數 → 立即回 job_id;新增唯讀工具 transcribe_status / transcribe_result (bounded long-poll,25 s cap)。JobRegistry actor:TTL 逐出 + 每次 start 全域 sweep(registry 有界)、與同步路徑共用 SingleFlight 序列化。
  • macOS GUI dual-track bundle(#87,PR #93):SwiftUI bestasr-guiBestASRGUICore 可測 session 狀態機 + thin views;拖放/檔案選擇、 語言/effort/格式選項持久化、stage+elapsed 誠實進度、結果預覽 + Finder 顯示)。 scripts/release-app.sh:universal build → bundle 組裝 → Developer ID nested-first 簽章 → notarize → staple + validate → zip。CLI 在 bundle 內 改名 bestasr-cli(預設 APFS 不分大小寫,bestasr 會覆寫 GUI bestASR—— smoke test 首跑即抓到,issue 原佈局不可行)。
  • LibriSpeech 英文標準語料(#88,PR #90):test-clean + dev-clean 各 4 組 ×6 utterances(8 corpora / 48 utterances),來源 tarball 與轉檔產物全程 SHA-256 pin;references/asr-benchmark-landscape.md 收錄 cited survey (license/access 矩陣、WER/CER 方法論)。
  • ExternalProcessEngine watchdog 修正(#91,PR #95)Process.isRunning 啟動期 race 會讓 watchdog 零迭代跳過 → 無界 waitUntilExit()(CI 上掛滿 stub 的 3600 s)。改用 terminationHandler 驅動的 ExitLatch(run() 前掛好) 作為迴圈條件——迴圈只能經「真的退出」或 deadline kill 離開;hung-adapter 測試 stub 3600 s → 15 s(regress 成本從 1 小時壓到秒級)。

程式檔變更(今日)

  • Sources/BestASRKit/Engines/ExternalProcessEngine.swift — ExitLatch watchdog
  • Tests/BestASRKitTests/ExternalEngineTests.swift — stub 降 15 s
  • Sources/BestASRKit/Models/DataModels.swiftBestASRVersion.current → 0.12.0
  • scripts/release-app.sh / scripts/release-mcp.sh / scripts/install.sh — bash 3.2 空陣列 set -u guard(${arr[@]+...};verify #87 HIGH,三處同款潛伏 bug 一次掃除) 與 enum-scoped + semver-asserted 版本 parse

發布動作

  • release-mcp.sh 0.12.0:notarize Accepted → Release v0.12.0(bestasr-mcp + sha256)
  • release-app.sh:notarize Accepted → staple 驗證通過(首顆離線可驗證 artifact) → bestASR-0.12.0.zip + sha256 上傳同一 release
  • /plugin-update bestasr:marketplace + plugin 0.11.0 → 0.12.0

維運

  • Spectra changes mcp-surface / mcp-transcribe-async / add-librispeech-corpus / gui-app-dual-track 歸檔(PR #92、#94),living specs 同步(新 mcp-surfacegui-app capability spec;corpora 增 LibriSpeech requirement)。
  • Issues #86 / #87 / #88 / #91 均以完整 closing summary 手動關閉;backlog 歸零。