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
fix(editor): hold the "one busy phase" promise through the first-run download
The 253 MB model download happens inside the `stt:transcribe` IPC — i.e. inside a
run the store has already marked `running` — so it correctly reads as one longer
"Transcribing…" phase, with no separate step and nothing falsely clickable. The
edges of that first run did not hold up, though:
- `SttManager.init` cached a REJECTED `prepare()`, so one dropped connection
during the download failed every later transcription in the session: the
remaining assets in the queue flipped red in the same frame, and the retry the
editor offers was a dead control until the app was restarted — reconnecting
changed nothing. The slot is cleared on failure now.
- A transient failure now stops the queue: the still-queued assets inherit the
verdict instead of each spending a full retry budget and stacking an identical
toast. It is the engine that failed, not their media.
- The transcript pane's read-only state is scoped PER ASSET again. Widening it to
the timeline-wide gate made every other clip's word stream swallow Backspace
and hover-bin clicks for the whole background pass, with nothing on screen to
say why — the exact "looks live, ignores you" failure mode. A block being
rewritten now shows a spinner + "Transcribing…" and dims its stream, and the
per-clip empty line no longer tells the user to regenerate an asset that is
mid-run.
- `mixToMono` hoists its channel arrays out of the sample loop. One WebIDL call
per sample per channel (~57 M for a ten-minute stereo recording) froze the
window — spinners included — for seconds, which was survivable while the pass
was user-triggered and is not now that it is automatic.
Found by an adversarial review of the first-run sequence; 4 new tests cover the
init retry, the queue stop and the per-asset read-only scoping.
0 commit comments