You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
bestASR currently ships three surfaces: the CLI, the Claude Code plugin
(~/bin auto-download of the notarized bestasr-mcp, #80), and the MCP
server. A Claude Desktop .mcpb extension was considered but parked: in
Desktop's chat surface, a long transcription means the human sits waiting in the
chat with no progress — a bad UX for exactly the workload bestASR is for.
A macOS GUI .app is the better human-facing vehicle, and it can be dual-track: the same signed bundle hosts the GUI (for humans, with a
progress UI) and the bestasr-mcp helper (for agents), from one artifact.
Original text (maintainer, roadmap discussion 2026-07-09):
「中期:做 macOS GUI .app,把 bestASR(GUI) + bestasr-mcp + bestasr(CLI) 打包進一顆 signed+stapled bundle,雙軌上線。這是新產品級投入(SwiftUI、檔案選擇、進度、結果檢視、設定),真要動我會照規矩用 apple-xcode-skills(SwiftUI)來寫,不憑記憶硬幹。」
Type
feature
Expected
A SwiftUI macOS app bundling all executables into one bundle:
One Developer ID sign + notarize + STAPLE (stapling = offline
verification, which the bare ~/bin binary cannot do — bare executables
aren't stapleable).
Drag-to-/Applications install; no terminal, no build-from-source.
No GUI. Humans either use the CLI or wait in a blocking MCP chat with no
progress. The only one-artifact install today is the Claude Code plugin, which
is agent-facing.
Impact
Reaches humans who want "drag a file → get an SRT" without Claude / terminal.
Better TCC story: a real .app bundle identity + Info.plist usage
descriptions vs. a bare ~/bin binary.
Better notarization: a stapled bundle verifies offline.
Constraints / notes:
New-product-level investment (SwiftUI, file pickers, progress, results view,
settings) — not a packaging change. Scope accordingly.
MUST use apple-xcode-skills (swiftui-specialist etc.) — Apple's official
current guidance, not from-memory Swift.
Reuses the che-mcps-notary sign/notarize pipeline (already provisioned).
The binary stays small; models still download at runtime (~1.5 GB to ~/.cache) — same as today.
Problem
bestASR currently ships three surfaces: the CLI, the Claude Code plugin
(
~/binauto-download of the notarizedbestasr-mcp, #80), and the MCPserver. A Claude Desktop
.mcpbextension was considered but parked: inDesktop's chat surface, a long transcription means the human sits waiting in the
chat with no progress — a bad UX for exactly the workload bestASR is for.
A macOS GUI
.appis the better human-facing vehicle, and it can bedual-track: the same signed bundle hosts the GUI (for humans, with a
progress UI) and the
bestasr-mcphelper (for agents), from one artifact.Type
feature
Expected
A SwiftUI macOS app bundling all executables into one bundle:
verification, which the bare
~/binbinary cannot do — bare executablesaren't stapleable).
/Applicationsinstall; no terminal, no build-from-source.~/binauto-download, enhancement: MCP server surface — 第三個消費面(CLI / plugin / MCP 三位一體) #80) path staysuntouched. This is a 4th surface (a GUI for humans), not a replacement.
Actual
No GUI. Humans either use the CLI or wait in a blocking MCP chat with no
progress. The only one-artifact install today is the Claude Code plugin, which
is agent-facing.
Impact
.appbundle identity + Info.plist usagedescriptions vs. a bare
~/binbinary.Constraints / notes:
settings) — not a packaging change. Scope accordingly.
apple-xcode-skills(swiftui-specialist etc.) — Apple's officialcurrent guidance, not from-memory Swift.
che-mcps-notarysign/notarize pipeline (already provisioned).~/.cache) — same as today.bestasr-mcphelper too(solves the agent long-wait; the GUI solves the human long-wait).
Related: #86 (MCP async job mode — the agent-side half of the long-wait problem).
Priority: P3 (mid-term).