Skip to content

Changelog

Che Cheng edited this page Jul 17, 2026 · 3 revisions

Changelog

2026-07-17 — v0.14.0 發布(幻覺過濾 Phase 2+3 出貨)

發布

  • v0.14.0:把 #100(--hallucination-filter full,confidence-gated)與 #101(WhisperKit decode knobs:--no-speech-threshold / --compression-ratio-threshold / --logprob-threshold)從 [Unreleased] 切版出貨。CHANGELOG [0.14.0] 段落為準。
  • release-mcp.sh 0.14.0:notarized bestasr-mcp(MCP hallucination_filter 參數自此吃得到 full)→ GitHub Release v0.14.0
  • release-app.sh:簽章 + notarize + staple 的 bestASR-0.14.0.zip 上傳同一 release
  • /plugin-update bestasr:plugin 0.13.0 → 0.14.0

程式檔變更(今日)

  • Sources/BestASRKit/Models/DataModels.swiftBestASRVersion.current → 0.14.0
  • plugins/bestasr/.claude-plugin/plugin.json — 0.14.0

2026-07-16 — 幻覺過濾 Phase 2+3(#100 confidence-gated full 模式、#101 decode knobs)

出貨(PR #102,cluster:兩案共享 WhisperKitEngine/TranscribeOptions/CLI)

  • --hallucination-filter full(#100):denylist 之上加 confidence gating—— openai-whisper 語意的聯合靜音規則(noSpeechProb > 0.6 avgLogprob < -1.0) 與重複規則(compressionRatio > 2.4)。RawSegment/TranscriptSegment 新增 optional noSpeechProb/compressionRatio(WhisperKit 填入;其他 backend 留 nil, nil 永不觸發門檻 → full 對該 backend 自動退化為 denylist,零分支)。 輸出格式不變(訊號僅供 filter 內部使用)。MCP hallucination_filter 參數自動可用 full
  • WhisperKit decode-param knobs(#101)--no-speech-threshold / --compression-ratio-threshold / --logprob-threshold(WhisperKit 限定; 未設 = 原廠預設 byte-for-byte)。verify 抓到真 HIGH:ArgumentParser 拒收前導 dash 值,而 log-prob 定義域恆為負——文件化的空格寫法在整個有意義範圍不可用; 以 parsing: .unconditional 修復 + 以真實 Transcribe 命令的空格形式回歸測試 (test target 因此連結 executable target)。chunkingStrategy 依 issue 原文 「possibly」明文緩議(residue)。

程式檔變更(今日)

  • Sources/BestASRKit/Output/HallucinationFilter.swift.full 模式 + 具名門檻常數
  • Sources/BestASRKit/{Engines/Engine,Engines/WhisperKitEngine,Models/DataModels}.swift — 訊號 plumbing + knobs
  • Sources/BestASRKit/CommandCore.swiftSources/bestasr/BestASRCommand.swift — 三 knob 貫穿 CLI
  • Tests/BestASRKitTests/{HallucinationFullModeTests,DecodeKnobsTests}.swift — 10 個新測試
  • Package.swift — test target 連結 executable(CLI parse 回歸測試)
  • README.md — full 模式 + knobs + deterministic 交互 + CLI-only scope

維運

  • #100 / #101 已以完整 closing summaries 手動關閉(cluster close);backlog 歸零。

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 歸零。